Rumah >pembangunan bahagian belakang >tutorial php >javascript - 为何不能用IF语句直接判断mysql_query函数的返回值?

javascript - 为何不能用IF语句直接判断mysql_query函数的返回值?

WBOY
WBOYasal
2016-06-06 20:48:011390semak imbas

比如在PHP文件中这么调用:

if(mysql_query($sql))...else...
$sql为insert语句
似乎这么写不管返回什么值都会执行else语句

而写成:

$DB=mysql_query($sql);
if($DB>0)echo "true";
else echo "false";
则可以,所以这是什么情况==!

另外我是用一个JS文件$.post到PHP文件,而如果吧ECHO改成RETURN语句的话就无法执行,这又是什么情况==!

回复内容:

比如在PHP文件中这么调用:

if(mysql_query($sql))...else...
$sql为insert语句
似乎这么写不管返回什么值都会执行else语句

而写成:

$DB=mysql_query($sql);
if($DB>0)echo "true";
else echo "false";
则可以,所以这是什么情况==!

另外我是用一个JS文件$.post到PHP文件,而如果吧ECHO改成RETURN语句的话就无法执行,这又是什么情况==!

mysql_query的返回值,根据sql语句可能有不同。

PHP:mysql_query - Manual

mysql_query() 仅对 SELECTSHOWEXPLAINDESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句, mysql_query() 在执行成功时返回TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。很有可能一条查询执行成功了但并未影响到或并未返回任何行。

对于你说的INSERT语句,在成功后应该是返回TRUE的,在失败的时候才是返回FALSE,执行你的else部分。

对于你第二个比较语句,先假设你的$DB就是一个bool值,实际发生的过程是,将0转换成为了bool值(应该是FALSE),而TRUE>FALSE,因此当你的$DB是TRUE的情况下大于0成立

但是你这样的判断方法是极其不合理的

判断mysql_query()是否执行成功,应该使用严格 $rst !== false

而当成功返回后,判断mysql_query()影响的行数,应该对相应的sql语句类型使用mysql_num_rows()mysql_affected_rows()来查看。

建议多看下手册。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:发送 微信后台创建的资源Artikel seterusnya:symfony自动登录问题