我在 PDO 上使用 prepare 获取 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 $start 和 $limit 没问题,因为它是分页脚本,在所有页面中都可以正常工作。
例如,我在网址中:mysite.com/index.php?sub=vid&under=info
所以查询应该是这样的:
"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");