好吧,也许我有点过度,但我不明白为什么这不起作用!我的网站上有一个评论框,其中包含发布帖子的个人资料。我想在个人资料中显示他们的帖子。他们的个人资料页面是userinfo.php?user =(whatever)
此查询失败:
$query = "SELECT message,`date`,ip,name,website,id
FROM `guestbook_message`
WHERE name=" . intval($_GET['user']) . "
AND deleted=0
ORDER BY `date` DESC";
答案 0 :(得分:5)
您将获取用户的名称并将其直接转换为整数,然后将其与名称进行比较。这没有意义。
如果$_GET['user']
是用户的ID,则将其与ID
进行比较,而不是与name
进行比较。
如果$ _GET ['user']是用户的用户名,那么你必须在用户名值周围加上引号。由于UserName值是一个字符串,您需要将其封装在引号中并删除intval
。这样做:
$query = "SELECT message,`date`,ip,name,website,id
FROM `guestbook_message`
WHERE name='" . mysql_real_escape_string($_GET['user']) . "'
AND deleted=0
ORDER BY `date` DESC";
答案 1 :(得分:2)
试试这个:
$name = intval($_GET['user']);
$query = "SELECT message,date,ip,name,website,id
FROM guestbook_message
WHERE name='" .$name. "'
AND deleted=0
ORDER BY date DESC";
$result = mysql_query($query) or die(mysql_error());
答案 2 :(得分:0)
假设您正在使用mysql_query()
执行查询,请检查查询是否成功?
$query = "SELECT ...";
$result = mysql_query($query) or die(mysql_error());
如果查询失败,执行此操作将强制脚本中止,并告诉您查询失败的原因。
答案 3 :(得分:0)
有一点需要注意,在查询中直接使用$ _GET会让您对SQL注入攻击开放。
在构建SQL语句之前考虑清理输入,或使用PDO / Prepared语句。