【问题标题】:Query result is true instead of false查询结果为真而不是假
【发布时间】:2015-08-19 15:23:10
【问题描述】:

考虑以下简单的 PHP 代码:

<?php  
   $db=new mysqli('localhost', 'root','','apeirosto');            
   $query="UPDATE REQUESTS SET STATUS=1 where requestid=155"; 
   $result=$db->query($query);  
   if (!($result)) {
     $message= "fail_update";   
     echo $message;
   }
   else
   {
     $message= "success";   
     echo $message;
   }  
?>

我的第二个问题:

 $result=$db->query($query);

在DB中扮演commit的角色?

我的主要问题:

即使没有 PK requestid=155 的行,$result 也会返回 true 并且我得到的消息是“成功”... 为什么?在这种情况下,我如何收到错误消息?

谢谢

【问题讨论】:

  • 检查查询php.net/manual/en/mysqli.error.php 中的错误,因为这个$message= "fail_update"; echo $message; 对您没有任何帮助。
  • "即使没有 PK requestid=155 的行" - MySQL 不会将其添加到您的数据库中。您需要使用 INSERT。
  • 我的答案对您有用,请标记为已接受,以帮助未来的访问者。

标签: php mysql


【解决方案1】:

查询方法只有在执行出错时才返回false。当没有发生变化时,没有错误,所以查询返回的不是 false。

您可以使用affected_rows 属性来检查任何行是否已更新。它返回查询后更改的行数。

更多信息:http://php.net/manual/en/mysqli.affected-rows.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 2016-09-27
    相关资源
    最近更新 更多