2014-02-12 141 views
-2

我的任務是重新生成每個班級代碼,但是有超過4,000人,我寧願不要那樣手動。我決定創建一個具有相同結構的測試數據庫,以便在我真正開始搞活服務器之前就搞砸了。多次運行相同的查詢

我有一個問題,試圖多次運行相同的查詢。我想多次運行它,因爲我有一個隨機生成的字符串(每次運行時都會生成這個字符串)需要替換其他字符串。

任何幫助,傢伙?

for ($i = 0; $i < 8; $i++) { 
     $password = str_rand(); 
     $sql = "UPDATE test " 
      . "SET classCode = '$password'". 
      . "WHERE id = '$i'"; 
    } 

    mysql_select_db('workshe3_worksheetwonder'); 
    $retval = mysql_query($sql, $conn); 
    if(! $retval) { 
     die('Could not update data: ' . mysql_error()); 
    } 
    echo "All codes regenerated successfully."; 
    mysql_close($conn); 
} 
+2

你使用什麼協議? mysql_ *? mysqli_ *? PDO?任何原因你爲什麼不運行循環中寫入的查詢? –

+0

你有什麼問題嗎? – MLeFevre

+0

MySQL。我遇到的問題是,它只是替換「$ i <#;」之前的數字。所以如果它是8,那麼它只會替換ID 7。 – Cody

回答

0

你的代碼看起來應該是這樣

mysql_select_db('workshe3_worksheetwonder'); 

for ($i = 0; $i < 8; $i++) { 
    $password = str_rand(); 
    $sql = " 
    UPDATE test 
    SET classCode = '$password' 
    WHERE id = '$i'"; 

    $retval = mysql_query($sql, $conn) or die('Could not update data: ' . mysql_error()); 
} 

echo "All codes regenerated successfully."; 

mysql_query()是需要在循環中去,因爲它是實際上做了更新的東西的功能。你的$sql只是一個帶有命令的字符串。如果你不在你的循環中運行mysql_query(),那麼你的字符串會被覆蓋而不被使用。

mysql_ functions are deprecated,這意味着您不應該將它們用於新代碼。如果您遵循該鏈接,則有一些替代協議的示例。

+0

雖然沒有解決問題,是嗎? – Cody

+0

它應該這樣做,這段代碼現在將多次運行查詢。如果不是,那麼你在其他地方有一個問題。 – MLeFevre