打印出num行只选择user2_id' s

时间:2012-08-12 21:58:53

标签: php mysql html

我正在尝试仅打印出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 . " ";
}

1 个答案:

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