从URL获取变量时出现MySQL错误

时间:2012-01-08 04:44:35

标签: php mysql

这是我的代码,但是当我尝试从url获取变量时出现此错误:警告:mysql_fetch_array():提供的参数不是有效的MySQL结果资源

URL变量DEVID是一长串字符,数字,短划线和下划线。关于什么是错的任何想法?

<?php
$con = mysql_connect("server","username","password");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("database", $con);

$result = mysql_query("SELECT * FROM $user WHERE DEVID=$DEVID");


while($row = mysql_fetch_array($result))
  {
  if (($row["FN"]) == NULL){
echo '<meta http-equiv="refresh" content="1;url=../register/default.php?user=';
echo $_GET["user"];
echo '&DEVID=';
echo $_GET["DEVID"];
echo '">Please hold, we are taking you to the registration page.<br/><br/>';
}

  }


mysql_close($con);
?>

3 个答案:

答案 0 :(得分:1)

如果$ DEVID是VARCHAR字段,那么在SQL查询中你需要单引号:

SELECT * FROM $user WHERE DEVID='$DEVID'

答案 1 :(得分:0)

在查询之前设置$DEVID的位置是什么?您没有使用PHP register_globals,那是来自查询字符串变量的吗?这是2012年!人们什么时候停止使用它?

答案 2 :(得分:0)

变量$ user和$ DEVID是否有值?它们已经初始化了吗?

假设$ user和$ DEVID已被初始化,则发生错误,因为mysql_query返回false,因为SQL查询在执行时会生成错误。

此外,您不应该使用直接从URL获取的变量。清除可能存在单个qoutes的值。使用mysql_real_esacape_string()。用下面的代码替换mysql_query行,看看是否发生SQL错误。

$DEVID=mysql_real_escape_string($DEVID);
$result = mysql_query("SELECT * FROM $user WHERE DEVID='$DEVID'") or die(mysql_error());