mysqli没有返回受影响的行

时间:2010-01-13 03:07:44

标签: php mysql

有人可以告诉我我做错了什么吗?删除行后,我无法获取受影响的行。即使执行了删除操作,该函数也始终返回int(0)。我阅读了我需要清除或关闭我所做的结果的地方,但它仍然无效。调试显示此错误:命令不同步。手册指出要克服这个问题,必须使用$ result-> free。就我而言,它不起作用。

    $res = db::query("CALL deleteUser('$phone')");

    if($res !== 1) {
        echo 'failed';
    } else {
        echo 'success';
    }

这是查询执行其功能的函数的一部分。

    if(self::$instance->query($query) === false){
        throw new exception("Failed");
    } return self::$instance->affected_rows;

2 个答案:

答案 0 :(得分:1)

调用存储过程或函数时,int(0)注意到存储过程退出时没有任何错误。您需要选择存储过程中受影响的行数,然后让存储过程通过输出变量返回受影响的行。

答案 1 :(得分:0)

在PHP中执行 MySQL存储过程时,有时会从尚未检索的服务器发送额外数据这将导致“命令不同步”错误。我不记得究竟是为什么,但我很久以前就在MySQL论坛上读过这个。您可以使用以下内容清理结果数据:

while (self::$instance->next_result()) { }