我試著透過這兩個查詢在我的資料庫中插入準備好的語句多個值,這兩個查詢都發生故障,回傳其中一個
未捕獲錯誤:呼叫未定義的方法 mysqli_stmt::bindValue()
第一個程式碼或
未捕獲的 ValueError:mysqli_stmt::execute():參數 #1 ($params) 必須是列表數組
第二個。當我輸入 list
而不是 array
時,它顯示
語法錯誤
注意所有變數、表格和欄位名稱都是簡化的變體
我看過很多類似的問題,但沒有一個能回答我的問題。甚至不是這個「重複」的那個。
有人有解決方案,或是替代方案嗎?
這是兩個程式碼:
if(isset($_POST['ID'], $_POST['atr1'])){ $sql = $db -> prepare("INSERT INTO some_table (ID, atr_place) VALUES (':fir', ':sec')"); $sql -> bindValue(':fir', $_POST['ID'],); $sql -> bindValue(':sec', $_POST['atr1'],); $sql -> execute(); }
$sql = $db -> prepare("INSERT INTO some_table (ID, atr_place) VALUES (:fir, :sec)"); $sql -> execute(array( ':fir' => $_POST['ID'], ':sec' => $_POST['atr1'], ));
正如錯誤訊息所表明的那樣,您正在使用 mysqli a> 與您的資料庫進行通訊的程式庫。但是,您的程式碼似乎是基於使用 PDO 的範例,其中是一個完全不同的圖書館。雖然表面上一些函數名稱相似,但實際上它們具有不同的 API 和要求。
例如,一些 API 差異是:
?
指定的匿名佔位符此程式碼應該與 mysqli 一起使用:
如果您有 PHP 8.1 或更高版本:
否則: