首页 >后端开发 >php教程 >为什么我的 MySQLi `bind_param()` 函数抛出'调用非对象上的成员函数”错误?

为什么我的 MySQLi `bind_param()` 函数抛出'调用非对象上的成员函数”错误?

Susan Sarandon
Susan Sarandon原创
2024-12-09 10:06:12703浏览

Why is My MySQLi `bind_param()` Function Throwing a

Mysqli 更新抛出对成员函数 bind_param() 的调用错误

问题:

MySQLi 正在抛出“Call”尝试使用以下方法更新表中的列时出现“非对象上的成员函数 bind_param()”错误bind_param() 方法。

原因:

bind_param() 方法只能在有效的 mysqli_stmt 对象上调用。发生错误是因为未正确创建 mysqli_stmt 对象。

解决方案:

解决此错误:

  1. 检查SQL查询:验证prepare()方法中的SQL查询在语法上是否正确正确。
  2. 将调用包装在 try/catch 中:将prepare() 调用封装在 try/catch 块中以处理任何异常。
  3. 检查错误:执行prepare()调用后,使用$mysqli->error检查是否有错误
  4. 使用 PDO: 考虑使用 PDO(PHP 数据对象)而不是 MySQLi。 PDO 提供了更加面向对象的接口并简化了数据库操作。

PDO 示例:

<?php
try {
  // Create PDO connection
  $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

  // Prepare update statement
  $stmt = $pdo->prepare("UPDATE questionnaire SET $key = ? WHERE id = ?");

  // Bind parameters
  $stmt->bindParam(1, $value, PDO::PARAM_STR); // Set the value parameter
  $stmt->bindParam(2, $rowid, PDO::PARAM_INT); // Set the rowID parameter

  // Execute update
  $stmt->execute();
} catch (PDOException $e) {
  trigger_error($e->getMessage(), E_USER_ERROR);
}

以上是为什么我的 MySQLi `bind_param()` 函数抛出'调用非对象上的成员函数”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn