PHP:命令不同步;您现在不能运行此命令

时间:2019-02-10 17:49:08

标签: php database mysqli while-loop

我通常从数据库中读取数据,但是使用while时出现错误。

我的代码是:

$BarberId    = 1;
$stmt = $db->prepare("CALL `GetBranch`(?);");
$stmt->bind_param('i', $BarberId);
$stmt->execute();

$Tree_Barber_Id = NULL;
$stmt->bind_result($Tree_Barber_Id);
$stmt->store_result();

if($stmt->num_rows)
{
    while($stmt->fetch())
    {        
        $Priod = NULL;
        $stmt2 = $db->prepare("SELECT `priod` FROM `t_barber` WHERE `id`=?");

        $stmt2->bind_param('i', $Tree_Barber_Id); //ERROR IS HERE!!!

        $stmt2->execute();
        $stmt2->bind_result($Priod);
        $stmt2->store_result();
    }
}

$stmt->close();

我认为该错误是由于变量stmt尚未关闭而引起的。但是通过$stmt->close(); while命令将其关闭将无法正常工作。

错误是:

Fatal error: Call to a member function bind_param() on boolean in C:\xampp\htdocs\file1.php on line 17

1 个答案:

答案 0 :(得分:2)

阅读错误消息。

  

致命错误:在第17行的C:\ xampp \ htdocs \ file1.php中的布尔值上调用成员函数bind_param()

第17行是这样:

$stmt2->bind_param('i', $Tree_Barber_Id);

错误消息告诉您$stmt2是布尔值。 $stmt2来自此行:

$stmt2 = $db->prepare("SELECT `priod` FROM `t_barber` WHERE `id`=?");

mysqli的prepare()函数returns false,如果有错误。

这意味着您的查询无效。您可以通过查看$db->error

来找出无效的地方