Php 使用mysqli\u查询数据时获取\u数组错误
如果我尝试创建如下sql查询: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 =
$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我正在使用我的第二个选项,但如果第一个选项不起作用,那就太好了。