php - fatal error : call to a member function fetch_array() on boolean

标签 php mysql mysqli

<分区>

我在尝试执行我的 php 脚本时遇到错误:

Fatal error: call to a member function fetch_array() on boolean in...

有问题的代码在这里:

function backup()
{
    global $mysqli;

    $bup        = "SELECT p.product_id, p.ean, p.image, p.model,  p.status, p.price_sync, p.modified_by, p.date_modified, pd.name, pd.description, pd.language_id, pd.meta_description, pd.meta_keyword, pd.tag FROM oc_product p INNER JOIN oc_product_description pd ON p.product_id = pd.product_id";
    $backup     = $mysqli->query($bup);
    $megainsert = "REPLACE INTO oc_product_backup(product_id, ean, image, model,  status, price_sync, modified_by, date_modified, name, description, language_id, meta_description, meta_keyword, tag) VALUES ";

    while($row  = $backup->fetch_array(MYSQLI_ASSOC))
    {
        $product_id       = $mysqli->real_escape_string($row['product_id']);
        $ean              = $mysqli->real_escape_string($row['ean']);
        $image            = $mysqli->real_escape_string($row['image']);
        $model            = $mysqli->real_escape_string($row['model']);
        $name             = $mysqli->real_escape_string($row['name']);
        $description      = $mysqli->real_escape_string($row['description']);
        $meta_description = $mysqli->real_escape_string($row['meta_description']);
        $meta_keyword     = $mysqli->real_escape_string($row['meta_keyword']);
        $tag              = $mysqli->real_escape_string($row['tag']);

        $megainsert      .= "('".$product_id."', '".$ean."', '".$image."', '".$model."',  '".$row['status']."', '".$row['price_sync']."', '".$row['modified_by']."', '".$row['date_modified']."', '".$name."', '".$description."', '".$row['language_id']."', '".$meta_description."', '".$meta_keyword."', '".$tag."'),";
    }

    $backup->close();
    $megainsert = substr_replace($megainsert, "", -1);
    $dobackup   = $mysqli->query($megainsert);
    if(!$dobackup) return $mysqli->error;
    else return true;
}

下一行是问题所在:

while($row  = $backup->fetch_array(MYSQLI_ASSOC))

上述函数前的代码如下:

   function clearBackupPrices()
{
    global $mysqli;

    $clean   = "TRUNCATE TABLE oc_product_price_backup";
    $doclean = $mysqli->query($clean);
    if(!$doclean) return $mysqli->error;
    else return true;
}

最佳答案

来自php documentation , MySQLi::query() 将:

Returns FALSE on failure. For successful SELECT, SHOW, DESCRIBE or EXPLAIN queries mysqli_query() will return a mysqli_result object. For other successful queries mysqli_query() will return TRUE.

这意味着以下查询失败(因此使 $backup = FALSE 而不是解释错误语句的对象):

$mysqli->query($bup);

这反过来意味着 sql 语句 $bup 导致了错误。我建议查看它和您的表格。看起来错误不是语法错误(因为语法错误会导致更早的错误消息),这意味着 MySQL 可以读取您的语句,但由于某种原因操作失败。您必须检查您的 SQL 语句以及您的表,看看逻辑中的缺陷是什么。

关于php - fatal error : call to a member function fetch_array() on boolean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37455186/

相关文章:

php - 无法使用 PHP 创建的管道写入 C 应用程序的 STDIN

MYSQL:更新记录随机2个固定字符

php - 使用php从xml中的mysql导出数据

php - MySQL有时无效的查询语法

PHP搜索功能显示null

php - 如何使用 php 从 sql 中回显一厘米的最高值

php - 检查二维数组中的值不为空的最简单方法是什么?

php - 在数据库中存储 SMTP 设置

mysql - 减去 MYSQL 时间戳固定的小时数,其中 ID 是某事

php - fatal error : Call to undefined function mysqli_result()