我正在尝试执行我的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语句以及您的表,并查看逻辑中的缺陷.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。