我试图在线显示用户列表

时间:2012-10-04 22:11:47

标签: php mysql sql

我正在尝试在线显示用户列表。我有一个sql,但在我的页面中它显示“ 你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在第8行附近使用正确的语法< / em> “,我想知道如何显示没有任何错误的用户列表。

<?php $sql = "SELECT
        user_id,
        user_name,          
        online
    FROM
        users
    WHERE
        user_id = " . mysql_real_escape_string($_GET['id']);

$result = mysql_query($sql);

if(!$result)
{
echo 'There are currently no user online.' . mysql_error();
}
else
{
if(mysql_num_rows($result) == 0)
{
    echo 'There are currently no user online.';
}
else
{
    //display category data
    while($row = mysql_fetch_assoc($result))
    { $D= $row['online']; 
    if( ($D) !=1)
    {
    echo 'There are currently no user online.';
}
else
{ 
         echo'<a href="/index.php?area=profile&userid=' .   $posts_row['user_id'] . '" class="topicuser_member"><span ' . $posts_row['user_class'] .  '>' . $posts_row['user_name'] . '</span></a>,';}}}}?>

3 个答案:

答案 0 :(得分:1)

你需要在where子句中围绕字符串引用:

$sql = "SELECT
    user_id,
    user_name,
    online
FROM
    users
WHERE
    user_id = '" . mysql_real_escape_string($_GET['id']) . "'";

答案 1 :(得分:0)

是否定义了变量'id'? 另外,如果你想获得一个在线用户列表,你的SQL查询错误,那么它应该是

$sql = "SELECT
    user_id,
    user_name,          
    online
FROM
    users
WHERE
    //here you should have the online column       
    online = online" or whatever the online value you have set

答案 2 :(得分:0)

A)手动字符串转义是一个坏主意&amp;如果忘记这样做,就会让你注意SQL注入。删除mysql_real_escape_string()并查看使用绑定变量的PDO,这样你再也不用担心它了。

B)您正在尝试查询单个用户ID的详细信息。这只会告诉您单个用户是否在线。不是很有用。如果您正在拍摄所有在线用户的列表,您可能只想删除WHERE子句。

C)如果您有任何有意义的用户数,所有在线用户的列表可能会迅速失控。我强烈建议回到直接用户数量(如果有人真的想要那么多信息,可能会有所有在线用户的页面)。