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

0kjbasz6  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(348)

我搞错了

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

在这条线上:

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

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

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

这是我的全部密码:

  1. <?php
  2. $servername = "localhost";
  3. $username = "usuario";
  4. $password = "usuario";
  5. $database = "proyectofinal";
  6. // Create connection
  7. $conn = new mysqli($servername, $username, $password, $database);
  8. // Check connection
  9. if ($conn->connect_error) {
  10. die("Connection failed: " . $conn->connect_error);
  11. }
  12. $stmt = $conn->prepare("SELECT cve_usuario FROM db_control");
  13. if($stmt->execute())
  14. {
  15. $stmt->bind_result($r);
  16. if($stmt->fetch()){
  17. echo $r;
  18. }
  19. $r = $r + 1;
  20. echo "<br>" . $r;
  21. $stmt = $conn->prepare("UPDATE db_control SET cve_usuario=? WHERE cve_control=1");
  22. $stmt->bind_param("i", $r);
  23. if($stmt->execute())
  24. {
  25. /*do something*/
  26. }
  27. }
  28. ?>
11dmarpk

11dmarpk1#

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

up9lanfz

up9lanfz2#

mysqli::prepare :

返回值 mysqli_prepare() 返回语句对象或 FALSE 如果发生错误。

你应该检查一下 prepare 通过严格检查呼叫成功( $stmt !== FALSE ),虽然很简单 if ($stmt) 也适用于这种特殊情况。
如果你想知道是什么让你 prepare 呼叫失败,您可以检查错误代码/消息:

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

相关问题