0
所以我有PDO的這個奇怪的問題,由於某些原因,綁定變量的查詢無法正確執行。讓我展示一些代碼:PDO沒有正確執行綁定變量
$conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pwd);
$sth=$conn->prepare("select count(*) from article");
$sth->execute();
var_dump($sth->fetchColumn());
這會在表格「article」中打印出正確數量的條目。
但是,如果我們改變它咯,通過使表命名參數,而不是一個常數:
$conn = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pwd);
$sth=$conn->prepare("select count(*) from :article");
$sth->execute(array(":article"=>"article"));
var_dump($sth->fetchColumn());
這將打印一個布爾值false。這兩個語句應該返回相同的結果,但我不知道爲什麼第二個不起作用。我懷疑我的地方有一個拼寫錯誤,但我查了幾次,但沒有看到任何問題。任何人有任何想法?
我正在將一個內部項目從mysql()移動到PDO,以避免SQL注入。主要的危險來自搜索查詢,哪些PDO應該能夠參數化。然而,即使我使用字符串連接,該應用程序也不適合SQL注入,因爲這是一個永遠不會被用戶觸及的值,所以我應該是安全的。 表名佔位符限制是否也適用於JOIN,或僅適用於FROM子句?我會認爲是的,但我會檢查確定。 – Ermir