$ mysqli-> affected_rows返回-1,但$ mysqli-> errno返回0

时间:2014-02-09 03:28:06

标签: php mysqli

我正在编写一个需要连接mysql的php程序。 所以我尝试使用mysqli。但正如标题所说,我得到了一个问题。 细节是这样的:

<?php
....
        $mysqli = new mysqli(HOST,USER,PASSWORD,DATABASE);
        if(mysqli_connect_errno()){
            printf("Connect failed: %s\n", mysqli_connect_error());
            exit();
        }
        $sql = "update dsagencyinfo set Company='a', Region='b', AgencyName='c', HeadAgencyCode='71u269', AgencyFlag='4850G', AgencyStarts='dd', AgencyAttr='e', AgencyType='test', AgencyAddr='f1', AgencyPhoto='ss', HouseAttr='f', HouseArea='60', DecorationDate='41183', CounterNumber='6', CounterNumberLT='2', CounterNumberYD='5', OperatorName='dd', OperatorTel='18607277068', ClerkNumber='1', AdminName='ff', AdminTel='1860727123',  CreateTime=now() where AgencyCode=36578689  ";
        if($mysqli->query($sql)){
           if($mysqli->affected_rows == 1){
               return true;
           }else{
               return false;
           }

        }
?>

但是我发现$mysqli->affected_rows返回-1,也就是说,这个sql应该有问题,所以我得到$mysqli->errno的值,但它返回0表示有没有错误发生!而且,$mysqli->error也会返回“”。 然后我输入这个sql到mysql(我使用phpmyadmin),执行它,mysql说它没关系,我在数据库中检查,这个数据确实更新了。 我无法理解为什么$mysqli->affected_rows返回-1,我该如何解决这个问题?

我的PHP版本是5.4.12 MySQL版本:5.6.12

1 个答案:

答案 0 :(得分:1)

似乎对象$ mysqli在输入条件之前没有得到结果。尝试:

if($mysqli = $mysqli->query($sql)){
       if($mysqli->affected_rows == 1){
           return true;
       }else{
           return false;
       }
}

或者从$ mysqli-&gt; query()条件中获取它。

$mysqli->query($sql);
if($mysqli->affected_rows == 1){
   return true;
} else {
   return false;
}