如果我尝试创建一个这样的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);
}
我收到以下错误:
Fatal error: Call to a member function fetch_array() on null in
如果我运行并将查询存储到$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);
^^^^^
你实际上是在查询两次,这就是你收到错误的原因.
另外,或者死(mysqli_error())属于查询调用之后,它需要一个db连接作为参数.
即:或死(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注入;使用准备好的声明.
参考文献:
> https://en.wikipedia.org/wiki/Prepared_statement
> http://php.net/manual/en/mysqli.prepare.php(mysqli)
> http://php.net/manual/en/pdo.prepared-statements.php(PDO)
注意:如果您打算使用PDO,请记住不要混用不同的MySQL API.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。