我正在尝试仅打印出streamdata_feedback表中包含user2_ids的行数,并且它似乎打印出user2_id和user1_id。如何使用以下代码纠正此问题?
$user1_id=$_SESSION['id'];
$user2_id=$data['id'];
$likesqltwo = "SELECT *
FROM streamdata_feedback
WHERE feedback_rating = 1
AND feedback_userid = " . $user2_id .
"AND feedback_streamid = " . $streamid;
$likequerytwo = mysql_query($likesqltwo);
$num3 = mysql_num_rows($likequerytwo);
if ($num3 > 0)
{
echo "And <a title = 'See who likes " .
$poster_name['fullusersname'] .
"s status' href='include/likes.php?streamitem_id=" .
$streamitem_data['streamitem_id']."' />" .
$num3 . " ";
}
答案 0 :(得分:1)
您的MySQL数据库是否有客户端?我建议选择SqlYog Community Edition。然后,您可以对其执行查询,并查看在PHP代码之外返回的行数。获得满意的查询后,将其合并到PHP项目中。
下一篇提示:您可以将PHP中的变量直接包含在带双引号的字符串中。 PHP将解析变量,您不需要连接。例如:
$likesqltwo =
"SELECT *
FROM streamdata_feedback
WHERE feedback_rating = 1
AND feedback_userid = $user2_id
AND feedback_streamid = $streamid;";
然而,这段代码仍有潜在的缺陷,那就是SQL injection attacks。因此,请确保您包含的变量 not 来自用户,或follow the link以了解有关防止此类事件的更多信息。这不是你要求帮助的,但我认为值得一提。
要了解feedback_userid
等于$user2_id
对于特定feedback_streamid
和仅feedback_rating
值为1的次数,您可以尝试以下查询:
SELECT COUNT(id)
FROM streamdata_feedback
WHERE feedback_rating = 1
AND feedback_userid = 123
AND feedback_streamid = 456;
将您的主键替换为id
,并分别替换123和456的正确用户ID和流ID。如果您得到意外数量的结果,我建议您删除COUNT(id)
并选择感兴趣的列,这样您就可以检查并了解为什么您获得的行数比您想象的要多。