為什麼我在 MySQLi 準備好的語句中收到「綁定變數數量不符」錯誤?

Patricia Arquette
發布: 2024-10-27 19:31:30
原創
644 人瀏覽過

Why Am I Getting

準備語句插入中綁定變數的數量不符

使用MySQLi準備語句執行INSERT語句時,使用者可能會遇到錯誤:「綁定變數的數量與準備好的語句中的欄位數量不符。」

當bind_param()方法中提供的綁定變數的數量與INSERT查詢中的佔位符的數量不一致時,就會出現此問題。例如,考慮下面的程式碼片段:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Bind results */
  $stmt->bind_result($user, $pw);

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}
登入後複製

在此程式碼中,INSERT 語句有兩個佔位符 (?):一個用於用戶,一個用於通行證。但是,bind_param() 方法將兩個變數($user、$pw)綁定到佔位符。這會導致不匹配錯誤。

解決方案是刪除 bind_result() 方法調用,因為 INSERT 語句不會傳回任何結果。下面更新的程式碼正確地將資料插入表中:

if($stmt = $conn->prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt->bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt->execute();

  /* Close statement */
  $stmt->close();
  $userId = $conn->insert_id;
}
登入後複製

以上是為什麼我在 MySQLi 準備好的語句中收到「綁定變數數量不符」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!