我曾尝试使用SQL查询从数据库中检索数据,但它没有成功地获取行
它告诉我PHP中的行是空的,但当我使用查询直接查询数据库时,它就起作用了。我不知道我在做什么。
// read all message records
function readAllByTopicId($from_record_num, $records_per_page, $topic_id){
// query to read all message records, with limit clause for pagination
**$query = "SELECT * FROM " . $this->table_name . " ps WHERE ps.published=1 and ps.id IN (SELECT pt.post_id FROM post_topic pt WHERE pt.topic_id=? GROUP BY pt.post_id HAVING COUNT(1)=1) ORDER BY id DESC LIMIT ?, ?";**
// prepare query statement
$stmt = $this->conn->prepare( $query );
// bind limit clause variables
$stmt->bindParam(1, $from_record_num, PDO::PARAM_INT);
$stmt->bindParam(2, $records_per_page, PDO::PARAM_INT);
$stmt->bindParam(3, $topic_id, PDO::PARAM_INT);
// execute query
$stmt->execute();
return $stmt;
}
尝试调试该语句以确保您在查询中拥有所需的数据。。。
$stmt->debugDumpParams();
否则可能加入?
$query = "
SELECT *
FROM
`" . $this->table_name . "` AS ps INNER JOIN
( SELECT pt.post_id FROM post_topic pt WHERE pt.topic_id=?
GROUP BY pt.post_id HAVING COUNT(1)=1) AS pt
ON ps.id = pt.post_id
WHERE ps.published=1 and ps.id IN
ORDER BY id DESC
LIMIT ?, ?";