开发者

SQL Multiple Update Statements

开发者 https://www.devze.com 2023-03-28 13:27 出处:网络
I need to update 40 rows in a database, starting at the point where the userID is a match. I do not want to have to determine the row number because eventually this database will be huge.

I need to update 40 rows in a database, starting at the point where the userID is a match. I do not want to have to determine the row number because eventually this database will be huge.

What I would like to do is simply say:

"Update these the next 40 rows with my array where userID = myUserID"

Here is what I have:

<?php
// connect to the database and select the correct database
$con2 = mysql_connect("localhost","Database","Password");
if (!$con2)
{
   die('Could not connect: ' . mysql_error());
}

mysql_select_db("ifaves_code", $con2);

$i = 0;
while ($i < 40) {

//cycle through the array
$cycleThrough2 = $updatedUserNames[$i];

//$query = "UPDATE tblUserLinks SET `URLName` = '$cycleThrough2' WHERE userID = '" . $mainUID . "' LIMIT 1";

mysql_query($query) or die ("Error in que开发者_如何转开发ry: $query");
++$i;

}
mysql_close();
?>

The variable $mainUID is being set correctly, the problem I'm having is it appears there are no updates taking place in the database.

How can I alter my existing code to receive my desired behaviour?


I don't suppose it's because you have your query building statement commented out...

//$query = "UPDATE tblUserLinks SET `URLName` = '$cycleThrough2' WHERE userID = '" . $mainUID . "' LIMIT 1";

If this is just the result of debugging and it wasn't working before that, you must call mysql_error() right after mysql_query() to see why it is failing.

$result = mysql_query($query);
if (!$result) echo mysql_error();

Also, you are using LIMIT 1 at the end, but the userID never changes in the WHERE clause. Therefore, you are updating the same row over and over 40 times on each loop. What you need is a way in your WHERE clause to identify rows which have already been modified, and exclude them. Otherwise, the same row (first match) will always be caught by the LIMIT 1 and updated.

0

精彩评论

暂无评论...
验证码 换一张
取 消