这是我的代码,但是当我尝试从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);
?>
答案 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());