我想使用bindParam.這是我的代碼的較短版本:$reindex['f_name'] = 'Tom';$reindex['l_name'] = 'Riddle';$reindex['date'] = '2020-12-12';$sql = "INSERT INTO tbl_user (f_name, l_name, date) VALUES (:f_name, :l_name, :date)";$stmt = $pdo->prepare($sql);foreach ($reindex as $key => $value) { echo $key . '<br>'; // look at output echo $value . '<br><br>'; $stmt->bindParam($key, $value);}$stmt->execute();回聲輸出:f_nameToml_nameRiddle我沒有收到任何錯誤消息。我這樣設置錯誤報告:ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);這可行,但我必須單獨定義每個綁定:$stmt->execute([ 'f_name' => $reindex['f_name'], 'l_name' => $reindex['l_name'], 'date' => $reindex['date']]);
1 回答

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
如果您從 PDO 手冊中應用它
PDOStatement::bindParam
將 PHP 變量綁定到用于準備語句的 SQL 語句中相應的命名或問號占位符。與 PDOStatement::bindValue() 不同,該變量被綁定為一個引用,并且只會在 PDOStatement::execute() 被調用時被評估。
你會明白在你的循環中你使用了相同的變量 X 次。每次循環都覆蓋它。
因此,當實際綁定完成時,在您->execute()
準備好的查詢時,您只有一個值,這些變量中循環中的最后一個值
- 1 回答
- 0 關注
- 90 瀏覽
添加回答
舉報
0/150
提交
取消