mysqli没有返回受影响的行

问题描述:

有人能告诉我我做错了什么吗?在行被删除后,我无法得到受影响的行。即使已执行删除操作,该函数始终返回int(0)。我读了我需要清除或关闭我已完成的结果的地方,但仍然无效。调试显示此错误:命令不同步。该手册指出,为了克服这个问题,必须使用$ result-> free。在我的情况下,它不起作用。mysqli没有返回受影响的行

$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; 
+0

为什么不只是选择相同的条件,并在删除前回显它们? – CheeseConQueso 2010-01-13 21:48:03

当调用一个存储过程或函数的int(0)被指出的是,存储的过程退出而没有任何错误。您需要选择存储过程中受影响的行数,然后让存储过程通过输出变量返回受影响的行。

+0

pygorex1,实际上有一个与之相关的错误。它声明这个命令不能在这个时候运行;命令不同步。另外,我明白过程不能输出布尔值。这是真的? – Bebo 2010-01-13 03:21:11

当执行在PHPMySQL的存储过程,在若干情况下有额外的数据从你尚未检索服务器发送。这将导致“命令不同步”错误。我不记得确切的原因,但很久以前我在MySQL论坛上读到了这个。你可以用这样的东西清理你的结果数据:

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

谢谢。我从来不清楚到底把它放在哪里。这应该高于回报stmt,对吗? – Bebo 2010-01-13 03:41:49