我不知道为什么但是当我使用mysqli在循环内执行查询时,似乎数据库不会更新。这是我的代码:
$db = new Mysqli("localhost", "xx", "xx", "xx");
if($db->connect_errno){
die('Connect Error: ' . $db->connect_errno);
}
if(!empty($item_details)){
foreach($item_details as $item){
$item_id = trim($item['asin']);
$product_name = trim($item['title']);
$item_url = trim($item['url']);
$lowest_price = trim($item['price']);
$db->query("
UPDATE aff_productdetails
SET product_name = '$product_name',
product_url = '$item_url',
lowest_price = '$lowest_price'
WHERE asin = '$item_id'"
);
}
}
我认为$item_details
的内容在这里是无关紧要的,因为我已经尝试过硬编码循环中的值,如下所示:
if($item_id == '123'){
echo "123"; //this was outputted
$db->query("
UPDATE aff_productdetails
SET product_name = 'some item',
product_url = 'http://amazon.com/dp/123',
lowest_price = '$1'
WHERE asin = '123'"
);
}
但它不起作用,特定行中的值仍然保持不变。然而,当我将它移到循环之外时,它完全正常:
$db->query("
UPDATE aff_productdetails
SET product_name = 'some item',
product_url = 'http://amazon.com/dp/123',
lowest_price = '$1'
WHERE asin = '123'"
);
任何想法似乎都是错误吗?我已经尝试使用error_reporting(E_ALL);
来显示所有错误,通知和警告但没有显示任何内容。它只是在循环内部时拒绝工作。提前谢谢。
如果有帮助我从同一数据库中的另一个表中获取$item_details
数组的数据,并用其他一些数据填充它:
$db_results = $db->query("SELECT prodASIN, prodName FROM aff_products");
$item_details = array();
$rows_returned = $db_results->num_rows;
while($row = $db_results->fetch_object()){
$item_details[] = array();
}
更新
启用mysqli错误报告:
mysqli_report(MYSQLI_REPORT_ALL);
我在aff_products
表中遇到了以下致命错误:
Fatal error: Uncaught exception 'mysqli_sql_exception' with message 'No index used in query/prepared statement