我正在尝试在线显示用户列表。我有一个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>,';}}}}?>
答案 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)如果您有任何有意义的用户数,所有在线用户的列表可能会迅速失控。我强烈建议回到直接用户数量(如果有人真的想要那么多信息,可能会有所有在线用户的页面)。