我可以在一个php块中使用fetch_array()两次吗?

时间:2012-12-18 08:58:10

标签: php mysql

$idno = $_GET['id'];
$identity = $idno;
$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'");

while ($row = mysql_fetch_array($result))
{
    ...
}

$resu = mysql_query("SELECT * FROM comment WHERE id='$identity'");
while ($row = mysql_fetch_array($resu))
{
    ...
}

我收到类似这样的错误:

  

警告:mysql_fetch_array()期望参数1是资源,   在C:\ xampp \ htdocs \ AlumniAssociation \ blog_written.php中给出的布尔值   第95行

3 个答案:

答案 0 :(得分:2)

  

警告:mysql_fetch_array()期望参数1为资源,布尔值为

此错误表示您的查询由于某种原因失败。如果失败,mysql_query()会返回false。这通常是由于语法错误,缺少字段/表或没有与数据库的连接。

您应该测试查询是否失败,以便您永远不会将布尔值传递给mysql_fetch_array()

$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'");

if($result)
{
    while ($row = mysql_fetch_array($result))
    {
        ...
    }
}
else
{
    // query failed - see mysql_error()
}

在同一页面上进行多次fetch_*调用没有问题,只要您使用不同的结果资源(否则每次都会向前移动指针)。

附注:mysql_*已弃用,建议升级到MySQLi或PDO。您的代码容易受到SQL注入攻击,使用参数化查询而不是手动将变量插入到查询中。

答案 1 :(得分:0)

检查数据库连接,然后检查mysql错误。

$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'");
if (!$result) { // add this check.
   die('Invalid query: ' . mysql_error());
}

答案 2 :(得分:0)

您是否创建了数据库连接?如果是,请检查连接。并且只有在连接返回true时才尝试运行mysql_query()