1 回答

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