【发布时间】:2018-08-11 02:07:48
【问题描述】:
我正在尝试从我的数据库表中获取所有评论投票,该表属于 $comments 变量中的 cmets(在 comment_votes 表中称为 item_id)并且 > 0。但是,我只得到一个运行以下脚本时的投票行(最后一个)。根据下面的数据库表值,我认为我应该有 4。IN() 只返回一行还是我做错了什么?
$comments = "1,3,4,5,6,7,11,12,13";
$db_conn = new Database;
$stmt = $db_conn->connect->prepare("SELECT ID FROM `COMMENT_VOTES` WHERE VOTE > 0 AND `ITEM_ID` IN (?)");
$stmt->bind_param("s", $comments);
$stmt->execute();
$result = $stmt->get_result();
$votes = [];
while ($row = $result->fetch_assoc()) {
array_push($votes, $row['ID']);
}
$votes = implode(",",$votes);
echo $votes;
+---------------------+
| COMMENT_VOTES |
+----+---------+------+
| ID | ITEM_ID | VOTE |
+----+---------+------+
| 1 | 12 | 1 |
| 2 | 8 | 0 |
| 3 | 3 | 1 |
| 4 | 22 | 1 |
| 5 | 5 | 0 |
| 6 | 5 | 1 |
| 7 | 5 | 1 |
| 8 | 5 | 0 |
+----+---------+------+
【问题讨论】:
-
我希望 3 个唯一 ID
3,5,12有 4 条记录,那么get_result()是什么,它对记录集有什么作用? -
get_result();给我字段计数 1 和 num_rows 1
-
我通常希望看到
$stmt->store_result()在执行准备好的语句后尝试获取行数之前看到bind_result( $id )之后 -
如果我做 IN(1,3,4,5,6,7,11,12,13) 它工作得很好。因此,$cmets 以“1,3,4,5,6,7,11,12,13”或其他方式运行是某种问题。