我有一个如下的查询
SELECT DISTINCT username
FROM comment_of_post
JOIN users_info
ON comment_of_post.commenter_user_id = users_info.user_id
JOIN comment_info
ON comment_info.comment_id = comment_of_post.comment_id
WHERE comment_info.post_id = ?
我在localhost中测试它应该有2条这样的记录:
abc
和abced
我还检查num_rows
也是2,但当我运行fetch_assoc()
和var_dump()
时,它会显示此结果
array (size=1) 'username' => string 'abc' (length=6)
数组中只显示1条记录,数组中未显示另一条记录abced
有人可以告诉我我做错了吗?
修改 以下是我使用查询的功能
public function getAllCommenterUsername($post_id){
$stmt = $this->conn->prepare("SELECT DISTINCT username FROM comment_of_post
JOIN users_info ON comment_of_post.commenter_user_id = users_info.user_id
JOIN comment_info ON comment_info.comment_id = comment_of_post.comment_id
WHERE comment_info.post_id = ? ");
$stmt->bind_param("s",$post_id);
$result= $stmt->execute();
if($result){
$commenterUsername = $stmt->get_result();
$stmt->close();
return $commenterUsername;
}else{
return NULL;
}
}
我运行这样的功能
$username = $db->getAllCommenterUsername($post_id)->fetch_assoc();
var_dump($username);
答案 0 :(得分:2)
你想这样使用fetch_all()
fetch_all(MYSQLI_ASSOC)
你会像这样实现它
$username = $db->getAllCommenterUsername($post_id)->fetch_all(MYSQLI_ASSOC);
var_dump($username);
此处的文档
答案 1 :(得分:1)
fetch_assoc
仅逐行返回。你应该在循环中使用它。
fetchall()
返回数组中的所有行。
如果您正在使用PDO Mysql,请查看此http://php.net/manual/fr/pdostatement.fetchall.php
答案 2 :(得分:0)
@ken在fetch_assoc()的位置使用fetchAll_assoc()
fetch_assoc() = fetch only one row from the total found rows
fetchAll_assoc() = fetch all rows which are found