所以我一直在使用准备好的语句和一些项目,它是与 MySQL 数据库交互的一种非常好的干净方式,但今天我遇到了一个奇怪的问题。
我准备好的语句已经开始在 sql 语句中添加额外的 ' ,对于我来说,我不知道为什么......
所以这里是代码:
<?php
$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”周围放置了一组额外的'',但还没有围绕偏移量?
谁能发现这个问题让我发疯:)
先感谢您!
解决方案,感谢发帖的人,你是对的,我将字段分成几部分,就像一个魅力。下面的代码解决方案:
<?php
$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();
?>