2011-08-14 206 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