我的代碼 -bindValue在INSERT不會工作
$con = new PDO ('mysql:host=localhost;dbname=air','root','123456');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$fields = implode(", ", $fields);
echo $fields;
$values = implode("','", $values);
echo $values;
// have to make this prevent sql injection //
// it wont work if i added bindValue why? //
$stmt = $con->prepare("INSERT INTO $table(ID, $fields) VALUES (?, ?)");
$stmt->bindValue(1,'',PDO::PARAM_STR);
$stmt->bindValue(2,$values,PDO::PARAM_STR);
$stmt->execute();
//if I remove `bindValue` and replace this it will insert //
$stmt = $con->prepare("INSERT INTO $table(ID, $fields) VALUES ('', $values)");
爲什麼我添加bindValue
之後我插入不會再工作,但是當我使用正常sql
,它會工作,有什麼毛病我bindValue
和VALUES(? ,?),誰能幫我看看?
「不工作」是否會導致您可能想要顯示的錯誤消息? $ fields和$ values包含什麼?你爲什麼不通過' - > execute([...])'來傳遞它們呢? – mario
由於您將'$ values'作爲字符串數組插入,因此您應該動態構建問號佔位符 – Ghost
您無法批量綁定字段。你必須單獨綁定他們。此外,要爲您的id字段綁定null,請使用'bindValue(2,NULL,PDO :: PARAM_NULL);' – Sebas