使用mysqli_query查询数据时出现fetch_array错误

时间:2017-07-21 12:24:10

标签: php

如果我尝试创建一个这样的SQL查询:

$sql2 = mysqli_query($connection,"SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error());
$getQuery = $connection->query($sql2);
while($row = $getQuery->fetch_array()){
    $childID = $row['ID'];
    $parentID = $row['PROD_ID'];
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg";
    unlink($childName);
}

我收到以下错误:

  

致命错误:在

中调用null上的成员函数fetch_array()

如果我运行并将查询存储到$sql,请执行以下操作:

$sql2 = ("SELECT * FROM CHILD_IMG WHERE PROD_ID = '$delID'") or die(mysqli_error());
$getQuery = $connection->query($sql2);
while($row = $getQuery->fetch_array()){
    $childID = $row['ID'];
    $parentID = $row['PROD_ID'];
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg";
    unlink($childName);
}

查询运行顺利,没有任何问题。

为什么第一个选项不起作用的原因是什么?

1 个答案:

答案 0 :(得分:5)

看到这段代码?

$sql2 = mysqli_query($connection,"SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error());
        ^^^^^^^^^^^^
$getQuery = $connection->query($sql2);
                         ^^^^^

您实际上是在查询两次,这就是您收到错误的原因。

另外,在{/ em>查询调用之后or die(mysqli_error())属于,它需要数据库连接作为参数。

即:or die(mysqli_error($connection))

因此,您要执行以下操作以检查查询是否失败:

if(!$getQuery){

    echo "Error: " . die(mysqli_error($connection));

}

重写:

$sql2 = "SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'";
$getQuery = $connection->query($sql2);
while($row = $getQuery->fetch_array()){
    $childID = $row['ID'];
    $parentID = $row['PROD_ID'];
    $childName = '../ProductImages/ChildImages/'.$parentID . "_".$childID.".jpg";
    unlink($childName);
}

您还可以打开SQL注入;使用准备好的声明。

参考文献:

注意:如果您打算使用PDO,请记住不要混用不同的MySQL API。