首頁 >後端開發 >php教程 >為什麼我的 MySQLi `bind_param()` 函數會拋出「呼叫非物件上的成員函數」錯誤?

為什麼我的 MySQLi `bind_param()` 函數會拋出「呼叫非物件上的成員函數」錯誤?

Susan Sarandon
Susan Sarandon原創
2024-12-09 10:06:12699瀏覽

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

Mysqli 更新拋出對成員函數bind_param() 的呼叫錯誤

問題:

問題:

原因:

bind_param() 方法只能在有效的 mysqli_stmt 物件上呼叫。發生錯誤是因為未正確建立 mysqli_stmt 物件。

解決方案:

  1. 解決此錯誤:
  2. 檢查SQL查詢:驗證prepare()方法中的SQL查詢在語法上是否正確正確。
  3. 將呼叫包裝在 try/catch 中:將prepare() 呼叫封裝在 try/catch 區塊中以處理任何異常。
  4. 檢查錯誤:執行prepare()呼叫後,使用$mysqli->error檢查是否有錯誤
使用PDO:

考慮使用PDO (PHP 資料物件)而不是MySQLi。 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);
}
PDO 例:

以上是為什麼我的 MySQLi `bind_param()` 函數會拋出「呼叫非物件上的成員函數」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn