mysql_query返回一行,但mysql_fetch_array没有做任何事情

时间:2012-08-18 01:46:07

标签: php mysql echo

这次我有一个奇怪的问题。我有一个屏蔽数据库设置,它接受一个url并给它一个字符串掩码,这样我就可以通过给用户链接到我网站的重定向引擎来将用户重定向到另一个站点(直接下载)。

我在管理员端(我放入url的地方)遇到问题,我的mysql_fetch_array命令没有运行。我知道查询至少返回一行,因为当我运行以下代码时:

$query = "SELECT * FROM `urls` WHERE `in`='$lks[$i]' ORDER BY `id` DESC LIMIT 1";

$r = mysql_query($query);

if(mysql_num_rows($r) < 1)
echo "Less than 1";
else
echo "At least 1";

它返回“至少1”,但当它返回到mysql_fetch_array while语句时,没有任何反应。就像它完全忽略它一样。

CODE:

$query = "SELECT * FROM `urls` WHERE `in`='$lks[$i]' ORDER BY `id` DESC LIMIT 1";

$r = mysql_query($query);

while($me = mysql_fetch_array($r))
{
    echo "Blah";
}

此代码没有回应任何内容。怎么了?

顺便说一句,我知道我已连接到数据库和所有内容,因为我在此之前运行与此非常类似的其他命令,并且它们都执行没有任何问题。

此命令也在 for循环中(我不知道为什么这会出现问题,因为我之前已多次这样做,从未遇到任何问题)。

3 个答案:

答案 0 :(得分:1)

尝试回显mysql_error();我想你可能会把你的列名和表名放在引号中。

$query = "SELECT * FROM urls WHERE in='$lks[$i]' ORDER BY id DESC LIMIT 1";
$r = mysql_query($query);
if($r)
{
$rowCount = mysql_num_rows($r);
if($rowCount == 1)
{
echo "1 row";
}
}
else
{
echo mysql_error(); 
}

如果这不起作用,那么你的阵列一定有问题。 :/

答案 1 :(得分:0)

这是错误的:

$query = "SELECT * FROM urls WHERE in='$lks[$i]' ORDER BY id DESC LIMIT 1";

应该是:

urls

但如前所述,请使用PDO。

答案 2 :(得分:0)

  

你正在检查少于一行,请回复mysql_num_rows($ r)   并检查返回的行数。

     

或使用die(mysql_error())和mysql_query来检查错误。