Проблема вставки данных в цикл foreach - PullRequest
0 голосов
/ 28 июля 2011

Проблема в том, что только некоторые из данных XML вставляются в базу данных MySQL.Предполагается, что 10 результатов будут внесены в базу данных, но она варьируется от 2 до 8 результатов.Я понятия не имею, почему это происходит, и я попытался добавить функцию ожидания, чтобы замедлить работу сценария, но данные, которые вставляются в базу данных, никогда не бывают такими же, как при выводе их на экран.Любая помощь будет высоко ценится ..

function post_to_db($xml,$cat_id){

    if ($xml->Items->Request->IsValid == 'True'){

        $xml = $xml->Items->Item;

        foreach($xml as $item){
            $asin     = (string)$item->ASIN;
            $title    = (string)$item->ItemAttributes->Title;
            $content  = (string)
                             $item->EditorialReviews->EditorialReview->Content;
            $sku      = (string)$item->ItemAttributes->SKU;
            $brand    = (string)$item->ItemAttributes->Brand; 
            $feature  = (string)$item->ItemAttributes->Feature;
            $model_no = (string)$item->ItemAttributes->Model;
            $review   = (string)$item->ItemLinks->ItemLink[5]->URL;

            $check = "SELECT * FROM `products` WHERE `asin` = '$asin'";
            $checked = mysql_query($check);
            $numrows = mysql_num_rows($checked);

            if ($numrows == 0){ 
                $query         = "INSERT INTO `products`".
                                   "(`cat_id`,`asin`,`sku`,`brand`,".
                                   "`model_no`,`title`,`content`,`feature`) ".
                                 "VALUES".
                                   "('$cat_id','$asin','$sku','$brand',".
                                    "'$model_no','$title',".
                                    "'$content','$feature')";

                $result        = mysql_query($query);
                $post_id       = mysql_insert_id();
                $review_page[] = array($post_id=>$review);  

            }
        }
    }

    return $review_page;    
}

1 Ответ

2 голосов
/ 28 июля 2011

Полагаю, некоторые из ваших переменных из XML создают недопустимый запрос (содержат ли они кавычки?)

Вместо этого для каждой переменной:

$asin           = (string)$item->ASIN;

Сделайте это вместо:

$asin = mysql_real_escape_string((string)$item->ASIN);

Если проблема не устранена, измените строку mysql_query на эту для отладки:

$result = mysql_query($query) or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...