1

这次我有一个奇怪的问题。我有一个屏蔽数据库设置,它接受一个 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 语句时,什么也没有发生。就好像它完全无视它一样。

代码:

$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 循环中(我不知道为什么会出现问题,因为我之前已经这样做了很多次并且从未遇到任何问题)。

4

3 回答 3

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(); 
}

如果这不起作用,则您的阵列一定有问题。:/

于 2012-08-18T01:51:47.877 回答
0

这是错误的:

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

应该:

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

但如前所述,使用 PDO。

于 2012-08-18T01:57:54.877 回答
0

您正在检查少于一行,请回显 mysql_num_rows($r) 并检查返回了多少行。

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

于 2012-08-18T02:02:25.610 回答