2012-07-27 50 views
0

不工作想不通這一個:首先MySQL的更新PHP

$try1 = mysql_query("UPDATE com_users SET `choice_one` = 'president'"); 
$try2 = mysql_query("UPDATE com_users SET `choice_two` = 'president'"); 

echo mysql_error($try1); 
echo mysql_error($try2); 

這PHP代碼相呼應,並沒有適當變化choice_two,而不是改變choice_one。

$try2 = mysql_query("UPDATE com_users SET `choice_two` = 'president'"); 
$try1 = mysql_query("UPDATE com_users SET `choice_one` = 'president'"); 

echo mysql_error($try1); 
echo mysql_error($try2); 

該PHP代碼沒有任何迴應,並正確地改變了choice_one,而沒有改變choice_two。

這些更新命令的順序如何可能導致一個人根本不工作?

+0

你應該[遠離使用'mysql_'函數](http://www.phptherightway.com/#databases)。 – 2012-07-27 00:41:15

+0

我知道,但我現在只是對webapp進行更改,不值得重寫整個事情。 – 2012-07-27 00:49:56

回答

2

查詢的順序無關緊要。如果還有其他代碼未顯示,請將其發佈...

mysql_error()的第一個參數不是結果資源,而是連接資源。因此,要獲得第一個錯誤,您需要在第一個查詢後立即調用它。

$try1 = mysql_query("UPDATE com_users SET `choice_one` = 'president'"); 
// Call with no parameter right after the query it relates to. 
echo mysql_error(); 

$try2 = mysql_query("UPDATE com_users SET `choice_two` = 'president'"); 
echo mysql_error(); 

請注意,您使用的不是WHERE條款,所有行會在第一時間更新。第二次嘗試運行這些查詢時(除非您重置了您的數據),則不會有行需要更新,查詢將不起作用(mysql_affected_rows() == 0)。