我试图只打印出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 . " ";
}
你有MySQL数据库的客户端吗?我建议选择SqlYog社区版。然后,您可以对它执行查询,并查看在 PHP 代码之外返回了多少行。一旦你有一个令人满意的查询,然后把它合并到你的PHP项目中。
下一个提示:您可以将 PHP 中的变量直接包含在带有双引号的字符串中。PHP 将解析变量,您无需连接。例如:
$likesqltwo =
"SELECT *
FROM streamdata_feedback
WHERE feedback_rating = 1
AND feedback_userid = $user2_id
AND feedback_streamid = $streamid;";
但是,此代码仍然存在一个潜在的缺陷,那就是SQL注入攻击。因此,请确保您包含的变量不是来自用户,或者点击链接以了解有关防止此类事情的更多信息。这不是你寻求帮助的,但我认为值得一提。
若要了解特定feedback_streamid
的feedback_userid
等于 $user2_id
的次数,并且仅feedback_rating
值为 1,可以尝试以下查询:
SELECT COUNT(id)
FROM streamdata_feedback
WHERE feedback_rating = 1
AND feedback_userid = 123
AND feedback_streamid = 456;
将您的主键替换为 id
,并将正确的用户 ID 和流 ID 分别替换为 123 和 456。如果您得到意外数量的结果,我建议您删除COUNT(id)
并选择感兴趣的列,以便您可以检查并查看为什么您获得的行数比您想象的要多。