如何解决这个MySql选择问题?

时间:2011-07-20 13:08:11

标签: php mysql database select

$_GET['id'] = $id1;
$result = mysql_query("SELECT * FROM example WHERE id = '$id1'");
while ($row = mysql_fetch_array($result)) {
   //some code
}

为什么这段代码不起作用?它不遵守id='$id2'位。它从表格示例中获取所有内容。

我该如何解决?


示例表包含id,text,time rows。文件名为example.php?id=1

7 个答案:

答案 0 :(得分:7)

不应该是$id1 = $GET['id']

但是你应该注意,因为你的代码容易受到SQL注入攻击,有人可以查询像example.php?'; delete from example;这样的精心设计的网址

答案 1 :(得分:1)

$_GET['id'] = $id1;应该是$id1 = mysql_real_escape_string($_GET['id']);吗?

答案 2 :(得分:0)

这对你有用吗?自从我上次使用php以来已经很久了......

$id1 = $_GET['id']; 
$result = mysql_query("SELECT * FROM example WHERE id = '$id1'"); 
while($row = mysql_fetch_array($result)) 
{ 
    //some code 
}

答案 3 :(得分:0)

  • 您的意思是$id1 = $_GET['id'];吗?
  • 你在哪里保护自己免受SQL注入?
  • 为什么你的所有代码都在一行?
  • 请不要在帖子中写下签名/谢谢。

答案 4 :(得分:0)

如果id是您表格中的数字字段,请尝试删除引号:

"select * from example where id = $id1"

当然:

$GET['id'] = $id1;

应该是:

$id1 = $GET['id'];

答案 5 :(得分:0)

不应该是$id1 = $_GET['id'];而不是$_GET['id'] = $id1;吗?

答案 6 :(得分:0)

$id1 = $_GET['1'];
$id1 = (int)$id1;
$result = mysql_query("SELECT * FROM example WHERE id = $id1 "); 

尝试不使用*

尝试调用极点的真实姓名,例如tablename.user_name,tablename.user_login