2012-07-27 55 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)。