0
我在準備語句中使用bindParam將行插入到表中時遇到了一些問題。PDO聲明中帶有bindParam的奇怪行爲
在這裏我的代碼。
$table = 'companies';
$fields = array('name', 'address', 'phone');
$values = array('Company Name', 'Company address', '555-9999999');
$sql = 'INSERT INTO '.$table.' ('.implode(', ', $fields).') VALUES ('
.substr(str_pad('', (count($fields) * 3), '?, '), 0, -2).')';
$statement = $db->prepare($sql);
for ($i = 1; $i <= count($fields); $i++) {
$statement->bindParam($i, $$fields[$i-1]);
}
for ($i = 0; $i < count($fields); $i++) {
${$fields[$i]} = $values[$i];
}
try {
$result = $statement->execute();
$this->rowCount = $result ? $statement->rowCount() : 0;
}
catch (Exception $ex) {
$this->error = $ex;
$result = false;
}
$ sql中就成了一個字符串,如 「INSERT INTO公司(名稱,地址,電話)VALUES(?,?,?)」
結合PARAMS一些變量,並給予價值的變量後,我執行該子句,但沒有任何反應,只是$ result是false,但沒有錯誤。也就是說,程序的執行不會進入catch塊。
這是什麼問題的代碼?任何解釋?
謝謝你的幫助。
我沒有在它看起來還正常,但有一點要記住的是,參數必須按引用傳遞 - 我不確定'$ statement-> bindParam($ i,$$ fields [$ i-1]);'會工作......您是否嘗試過使用'bindValue'? – CD001
正在用另一種方法進行更新。此外,我有一些日期字段和bindValue抱怨「日期不能轉換爲字符串」。 Argggggh – Dhouard
嗯,我只是從字面上將你的代碼複製/粘貼到我的開發箱中的一個文件中,並在我的'test'數據庫中配置了表格......並且一切正常。 – CD001