2011-08-14 56 views
2

我需要更新数据库中的40行,从userID匹配的位置开始。我不想确定行号,因为最终这个数据库将是巨大的。SQL多个更新语句

我想要做的就是简单地说:

“我的阵列更新这些未来的40行,其中用户ID = 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

当你说“下一个40行”你是什么意思?接下来以什么顺序? –

回答

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捕获并更新。

+0

ooops从测试中即使没有注释它也不起作用。对不起,哈哈。 – Mike

+0

@Mike参见上面关于更新同一行的更多内容 –

+0

谢谢Michael,我希望它能循环遍历行中找到第一个userID的行。我会得到行号并循环。感谢您的帮助。 – Mike