0

我试图只打印出我的 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 . " ";
}
4

1 回答 1

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 注入攻击。因此,请确保您包含的变量不是来自用户,或点击链接了解有关防止此类事情的更多信息。这不是你寻求帮助的原因,但我认为值得一提。

要找出特定的feedback_userid等于多少次且仅等于1 的值,您可以尝试以下查询:$user2_idfeedback_streamidfeedback_rating

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)并选择感兴趣的列,这样您就可以检查并了解为什么您获得的行数比您想象的要多。

于 2012-08-12T22:19:30.720 回答