這可能嗎?例如使用PDO/MySQL準備語句的表名作爲參數
SELECT * FROM :database WHERE id = :id
如果不是,應該我只是這樣做:
SELECT * FROM ' . $database . ' WHERE id = :id
或者是有一些其他技巧我需要學習?
這可能嗎?例如使用PDO/MySQL準備語句的表名作爲參數
SELECT * FROM :database WHERE id = :id
如果不是,應該我只是這樣做:
SELECT * FROM ' . $database . ' WHERE id = :id
或者是有一些其他技巧我需要學習?
表名和列名不能被PDO中的參數替換。 參見Can PHP PDO Statements accept the table or column name as parameter?
在查詢中傳遞動態構建的表名是相當危險的。但是,如果您的應用程序需要這麼多,則必須清理數據。由於PDO無法幫助您,所以您必須自己撥打mysql_real_escape_string。你也必須用反引號把表名稱作爲`table_name`。所以,準備查詢爲:
'SELECT * FROM `' . mysql_real_escape_string($database) . '` WHERE id = :id
一個注意:mysql_real_escape_string
需要數據庫已建立的連接。
編輯:但是,當我想到它,可能是最好匹配$database
變量與您現有的表。
是的,我從固定列表中選擇它們,但這是一個很好的觀點。 –
哦,我沒看到那個帖子。謝謝! –