我有一個小問題越來越與PDO準備一個SQL查詢,我有這樣的代碼:PHP PDO自定義的SQL查詢準備
$portfolio = $db->prepare("SELECT * FROM `news`, `:sub` WHERE `news`.`id` = `:sub`.`id_news` AND `page` = `:under` ORDER BY `date` DESC LIMIT :start, :limit");
$portfolio->bindParam(':under', $_GET['under'], PDO::PARAM_STR);
$portfolio->bindParam(':sub', $_GET['sub'], PDO::PARAM_STR);
$portfolio->bindParam(':start', $start, PDO::PARAM_INT);
$portfolio->bindParam(':limit', $limit, PDO::PARAM_INT);
$portfolio->execute();
但是,這並沒有給任何價值,我的數據庫有值正確,任何人都知道爲什麼這不起作用? PS:VAR $開始和$限制都很好,與它沒有任何問題因爲真的是分頁的腳本,在所有頁面做工非常精細。
對於爲例我在網址:mysite.com/index.php?sub=vid &下=信息
所以查詢應該是這樣的:
"SELECT * FROM `news`, `vid` WHERE `news`.`id` = `vid`.`id_news` AND `page` = `info` ORDER BY `date` DESC LIMIT 0, 10"
那麼什麼我明白以前的代碼應該工作,仍然是安全的嗎?
switch($_GET['sub']){
case "vid":
$table = "vid";
break;
case "img":
$table = "img";
break;
}
$portfolio = $db->prepare("SELECT * FROM `news`, `$table` WHERE `news`.`id` = `$table`.`id_news` AND `page` = :under ORDER BY `date` DESC LIMIT :start, :limit");
爲什麼你有一個**動態鏈接表?**你的設計有一些可怕的東西,你知道。 –
不能綁定PDO表名;檢查http://stackoverflow.com/questions/182287/can-php-pdo-statements-accept-the-table-name-as-parameter – newfurniturey
這是不可能有動態表名稱,你需要去一個不同的這些動態的方式(但正如你上面所說的那樣,最好查看你的數據庫結構,爲什麼你首先需要這樣做。) –