在循环内部时,MySqli不会更新数据库

时间:2013-10-09 01:23:16

标签: php mysqli

我不知道为什么但是当我使用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

0 个答案:

没有答案