如果我尝试创建一个这样的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);
}
查询运行顺利,没有任何问题。
为什么第一个选项不起作用的原因是什么?
答案 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。