Php 使用mysqli\u查询数据时获取\u数组错误

Php 使用mysqli\u查询数据时获取\u数组错误,php,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 =

如果我尝试创建如下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);
}
查询运行顺利,没有任何问题

第一个选项不起作用的问题是什么?

看到这段代码了吗

$sql2 = mysqli_query($connection,"SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error());
        ^^^^^^^^^^^^
$getQuery = $connection->query($sql2);
                         ^^^^^
您实际上查询了两次,这就是为什么会出现错误

另外,
或die(mysqli_error())
属于查询调用之后,它需要db连接作为参数

例如:
或die(mysqli\u错误($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注入;使用事先准备好的陈述

参考资料:

  • (mysqli)
  • (PDO)

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

您将混合使用对象或集成方法和过程方法。不要这样做:您的查询没有正确调用
$sql2=“SELECT*FROM CHILD\u IMG WHERE PROD\u ID='$delID'”
而不是此
$sql2=(“SELECT*FROM CHILD\u IMG WHERE PROD\u ID='$delID'))或die(mysqli\u error())啊,我明白了。因此,如果我想让第一个选项起作用,我需要执行$getQuery=$connection($sql2);?更具描述性。+1。但添加解决方案。你说出了原因,但没有补充solution@Fred-ii-工作的也有
或die(mysqli_error())unnecessarly@AlivetoDie谢谢,给我一分钟。我也注意到了你的新评论。@Fred ii我正在使用我的第二个选项,但如果第一个选项不起作用,那就太好了。