这是我拥有的代码,但是当我尝试从url: Warning: 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);
?>发布于 2012-01-08 12:53:48
如果$DEVID是一个VARCHAR域,那么在您的SQL查询中需要用单引号将它引起来:
SELECT * FROM $user WHERE DEVID='$DEVID'发布于 2012-01-08 12:49:48
在查询之前,$DEVID设置在哪里?您使用的不是PHP,而是来自register_globals -string变量,对吗?这是2012年!人们什么时候会停止使用它?
发布于 2012-01-08 12:58:35
变量$user和$DEVID是否有值?它们被初始化了吗?
假设$user和$DEVID已经初始化,发生错误是因为mysql_query返回false,因为SQL查询在执行时会产生错误。
此外,您不应该使用直接从URL获得的变量。清除可能存在的单个qoute的值。使用mysql_real_esacape_string()。将SQL行替换为以下代码,以便在发生错误时查看mysql_query。
$DEVID=mysql_real_escape_string($DEVID);
$result = mysql_query("SELECT * FROM $user WHERE DEVID='$DEVID'") or die(mysql_error());https://stackoverflow.com/questions/8775445
复制相似问题