84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
比如在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语句的话就无法执行,这又是什么情况==!
认证0级讲师
PHP:mysql_query - Manual
mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句, mysql_query() 在执行成功时返回TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。很有可能一条查询执行成功了但并未影响到或并未返回任何行。
mysql_query()
SELECT
SHOW
EXPLAIN
DESCRIBE
对于你说的INSERT语句,在成功后应该是返回TRUE的,在失败的时候才是返回FALSE,执行你的else部分。
对于你第二个比较语句,先假设你的$DB就是一个bool值,实际发生的过程是,将0转换成为了bool值(应该是FALSE),而TRUE>FALSE,因此当你的$DB是TRUE的情况下大于0成立。
TRUE>FALSE
但是你这样的判断方法是极其不合理的。
$rst !== false
而当成功返回后,判断mysql_query()影响的行数,应该对相应的sql语句类型使用mysql_num_rows()或mysql_affected_rows()来查看。
mysql_num_rows()
mysql_affected_rows()
建议多看下手册。
mysql_query的返回值,根据sql语句可能有不同。
PHP:mysql_query - Manual
对于你说的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()
来查看。建议多看下手册。