【问题标题】:fetch_array errors when querying data using mysqli_query使用 mysqli_query 查询数据时出现 fetch_array 错误
【发布时间】:2017-12-27 12:04:55
【问题描述】:

如果我尝试创建这样的 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 in 上调用成员函数 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 = "SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'" 而不是这个$sql2 = ("SELECT * FROM CHILD_IMG WHERE PROD_ID='$delID'") or die(mysqli_error());

标签: php


【解决方案1】:

看到这段代码了吗?

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

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

另外,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。

【讨论】:

  • 啊,我明白了。所以如果我想让第一个选项起作用,我需要做 $getQuery = $connection($sql2);?
  • 更具描述性。+1。但添加解决方案。你说出原因但没有添加解决方案
  • @Fred-ii- 工作的也有or die(mysqli_error());不必要的
  • @AlivetoDie 谢谢,给我一分钟。我也注意到了你的新评论。
  • @Fred ii 我正在使用我的第二个选项,但是为什么第一个不起作用会很好。
猜你喜欢
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 2023-03-14
  • 1970-01-01
  • 2014-08-21
相关资源
最近更新 更多