2012-05-25 46 views
0

所以我想基於單參數更新我的表格:基於條件的更新表(While循環)

dateEntered字段必須爲空。

而且我要隨機選擇50行,並更新空白OWNERID領域的「測試」

以下是我有:

<?php 
include("includes/constants.php"); 
include("includes/opendb.php"); 



$query = "SELECT * FROM contacts WHERE dateEntered='' ORDER BY RAND() LIMIT 50"; 
$result = mysql_query($query) or die(mysql_error()); 

while($row = mysql_fetch_assoc($result)){ 
     $firstid = $row['id']; 

     $query2 = mysql_query("UPDATE contacts 
         SET ownerID = 'Tester' 
        WHERE id = '$firstid'"); 

     $result2 = mysql_query($query2) or die(mysql_error()); 

     } 

?> 

它將更新一個記錄,然後退出並給我:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1 

選擇記錄的第一部分工作正常,其query2不會更新所有50條記錄,只有一個。也許我寫錯了。

+0

嘗試調試$ QUERY2而 –

+1

@MoyedAnsari內:他是通過輸出調試吧'mysql_error()' – xbonez

+0

確定'ownerID'或'id'是類型'INT'的呢? – xbonez

回答

2

的mysql_query只需要一個時間

$query2 = mysql_query("UPDATE contacts 
        SET ownerID = 'Tester' 
       WHERE id = '$firstid'"); 

    $result2 = mysql_query($query2) or die(mysql_error()); 

$result2 = mysql_query("UPDATE contacts 
        SET ownerID = 'Tester' 
       WHERE id = '$firstid'"); 
+0

這看起來像。 – xbonez

+0

這是正確的! – user1393955

1

這些答案都是現貨,所以我只會添加一些額外的信息和建議。當你查詢的MySQL的第一次,$ QUERY1被設置爲結果的資源,這對於

$query1 = mysql_query("UPDATE contacts SET ownerID = 'Tester' WHERE id = '$firstid'"); 

返回1(布爾TRUE),這就是爲什麼你的第二個查詢失敗,原因爲「1」的結果不是有效的mysql查詢字符串。正如Greg P所說,您可以通過消除次要mysql查詢來修復當前腳本。

但是,您可以完全改進腳本,並使用此功能減少sql調用次數。

<?php 

    include("includes/constants.php"); 
    include("includes/opendb.php"); 

    $query = "UPDATE contacts SET owenerID='Tester' WHERE dateEntered='' ORDER BY RAND() LIMIT 50"; 
    $result = mysql_query($query) or die(mysql_error());