php boolean 数组传递,php – 致命错误:在布尔值上调用成员函数fetch_array()

我正在尝试执行我的PHP脚本时遇到“致命错误:在boolean in …中调用成员函数fetch_array()”错误.有问题的代码在这里:

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,mysql

来源: https://codeday.me/bug/20190928/1825267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值