因此,一段时间以来,我一直在使用准备好的语句来执行多个项目,这是与MySQL db交互的一种非常好的干净方法,但是今天我遇到了一个奇怪的问题.
我准备好的语句已经开始在sql语句中添加额外的’,对于我一生来说,我不知道为什么…
所以这是代码:
$sortby="ORDER BY submit_date DESC";
$offset = 3;
$sql = "SELECT img_id, img_name, submit_date FROM tbl_images WHERE img_active='y' :sortby LIMIT :offset, 9";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(":sortby", $sortby, PDO::PARAM_STR);
$stmt->bindParam(":offset", $offset, PDO::PARAM_INT);
$stmt->execute();
?>
所以上面没有返回任何内容,所以查看数据库日志,这就是查询的样子
SELECT img_id, img_name, submit_date FROM tbl_images WHERE img_active='y' 'ORDER BY submit_date DESC' LIMIT 3, 9
似乎在“ ORDER BY Submit_date DESC”周围放了一个额外的“”,但是在偏移量附近还没有?
任何人都可以发现问题,因为它使我发疯:)
先感谢您!
解决方案,多亏了发布的人员,您是正确的,我将字段拆分为多个部分,并像魅力一样工作.下面的代码解决方案:
$sortfield="submit_date";
$sortway="DESC"
$offset = 3;
$sql = "SELECT img_id, img_name, submit_date FROM tbl_images WHERE img_active='y' ORDER BY :sortfield :sortway LIMIT :offset, 9";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(":sortfield", $sortfield, PDO::PARAM_STR);
$stmt->bindParam(":sortway", $sortway, PDO::PARAM_STR);
$stmt->bindParam(":offset", $offset, PDO::PARAM_INT);
$stmt->execute();
?>