使用php和mysql获取url的问题

时间:2011-02-16 01:26:20

标签: php mysql mysql-error-1064

对不起,如果这个问题对某些人来说似乎很容易,但我似乎无法弄明白。有人告诉我,我可以来这里,因为这里的人非常乐于助人。我遇到以下代码的问题。当uid被调用example page.php?uid=5的网址时,如果我page.php?uid=letters我获得了“某些代码”,我会被重定向到page.php?uid=1。工作正常。但是如果用户应该输入page.php?uid=1letters我会收到此错误。'where子句'中的未知列'1gh'

  

警告:mysql_fetch_array()要求参数1为资源,在第173行的C:\ wamp \ www \ page.php中给出布尔值。

如果用户在get url id的末尾输入了不需要的字符,我只会收到此错误。如何防止这种情况发生?如何将其重定向到page.php?uid=1 ...请参阅下面的代码

$id = mysql_real_escape_string(@$_GET['uid']);

$query = mysql_query("SELECT user.* FROM user WHERE id = '$id'");

if ((mysql_num_rows($query)==0)) {
    header("location:page.php?uid=1");
    die();
}
else {
    while($rows = mysql_fetch_array($query)){
        $foo = $row['foo'];

        echo "some code";

1 个答案:

答案 0 :(得分:1)

mysql_query在出错时返回false。你应该检查它返回的内容:

$query = "SELECT user.* FROM user WHERE id = '$id'"
$result = mysql_query($query);

if ($result === false) {
    die($query.'<br/>'.mysql_error());
}

然后你就可以理解为什么失败了。我已将查询添加到die()语句中,因此您也可以手动尝试查询。

给出的错误是字符串的未知列,这表明您不会在SQL查询中用单引号括起该值,即使问题中的代码确实如此。

在生产中,您应该采取所有步骤,以确保正常处理错误。在这种情况下,您可能需要与未找到用户相同的行为:

header("location:page.php?uid=1");