1 回答

TA貢獻1812條經驗 獲得超5個贊
在MySQL中,標識符不能作為值提供。
對列的引用必須出現在 SQL 語句的文本中,它們不能通過綁定參數提供。這適用于表名、列名、函數名。
沒有解決方法;這是一個設計限制。這有幾個原因。最直接的原因之一是了解SQL語句的準備方式,提出執行計劃所需的信息,表和列必須在準備時知道(用于語義檢查和特權檢查)。實際值可以推遲到執行時間。
綁定占位符用于提供值,而不是標識符。
通過給定的代碼,MySQL看到的是沿著以下路線的東西
UPDATE `mytable` SET 'a string value' WHERE `id_col` = 42
而我的學習進度正在猶豫不決。'a string value'
我們可以(也應該)對值使用綁定參數。
我們可以動態生成如下所示的 SQL 文本:
UPDATE `mytable`
SET `col_one` = :val1
, `col_two` = :val2
WHERE `id_col` = :id
在將SQL文本準備到語句中后,我們可以綁定值:
$sth->bindValue(':val1', $value_one , PDO::PARAM_STR );
$sth->bindValue(':val2', $value_two , PDO::PARAM_STR );
$sth->bindValue(':id' , $id , PDO::PARAM_INT );
然后執行
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報