错误:在执行第二次bind_param()时调用成员函数bind_param()

时间:2018-05-28 16:31:00

标签: php mysql

我收到了错误

Fatal error: Uncaught Error: Call to a member function bind_param() on boolean

在这一行:

$stmt->bind_param("i", $r);

我的查询准备正确吗? 我检查了表和列的名称,它们是正确的

$stmt = $conn->prepare("UPDATE db_control SET cve_usuario=? WHERE cve_control=1");
$stmt->bind_param("i", $r);

继承我的整个代码:

<?php
            $servername = "localhost";
            $username = "usuario";
            $password = "usuario";
            $database = "proyectofinal";

            // Create connection
            $conn = new mysqli($servername, $username, $password, $database);

            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: " . $conn->connect_error);
            }

            $stmt = $conn->prepare("SELECT cve_usuario FROM db_control");
            if($stmt->execute())
            {
                $stmt->bind_result($r);
                if($stmt->fetch()){
                    echo $r;
                }

                $r = $r + 1;

                echo "<br>" . $r;

                $stmt = $conn->prepare("UPDATE db_control SET cve_usuario=? WHERE cve_control=1");
                $stmt->bind_param("i", $r);
                if($stmt->execute())
                {
                    /*do something*/
                }
            }
?>

2 个答案:

答案 0 :(得分:-1)

来自documentation of mysqli::prepare

  

返回值

     如果发生错误,

mysqli_prepare()将返回一个语句对象或FALSE

您应该检查prepare调用是否成功通过严格检查($stmt !== FALSE),尽管在此特定情况中也可以使用简单的if ($stmt) 。< / p>

如果您想知道导致prepare呼叫失败的原因,您可以查看错误代码/消息:

$stmt = $conn->prepare("...");
if ($stmt) {
  // bind parameters, execute statement, etc
} else {
  echo "MySQLi error: " . $conn->error;
}

答案 1 :(得分:-1)

我解决了!在准备第二个查询之前忘记关闭连接。

这就是诀窍!感谢