我需要更新数据库中的40行,从userID
匹配的位置开始。我不想确定行号,因为最终这个数据库将是巨大的。
我想做的只是说:
“使用我的数组更新这些接下来的40行,其中userID = myUserID”
这就是我所拥有的:
<?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 query: $query");
++$i;
}
mysql_close();
?>
变量$mainUID
设置正确,我遇到的问题是数据库中没有发生更新。
如何更改现有代码以接收我想要的行为?
答案 0 :(得分:3)
我不认为这是因为你的查询构建语句被注释掉了......
//$query = "UPDATE tblUserLinks SET `URLName` = '$cycleThrough2' WHERE userID = '" . $mainUID . "' LIMIT 1";
如果这只是调试的结果而在此之前无法正常工作,则必须在mysql_error()
之后立即调用mysql_query()
以查看失败的原因。
$result = mysql_query($query);
if (!$result) echo mysql_error();
此外,您最后使用LIMIT 1
,但userID
在WHERE子句中永远不会更改。因此,您在每个循环上重复更新同一行40次。您需要的是WHERE子句中的一种方法,用于标识已经修改过的行,并将其排除。否则,LIMIT 1
将始终捕获同一行(第一个匹配)并更新。