2013-03-24 2 views
0

Я пытаюсь получить данные из XML-файла в Интернете в моей базе данных, чтобы я мог использовать его.Вставка данных из файла XML в таблицу

Я подготовил следующий код, но поскольку он был давно, так как я сделал кодирование, imlost с сообщением об ошибке, которое я получаю.

Ошибка: «Неизвестный столбец« 10074 »в поле« Список полей ».

10074 - это идентификатор продукта первого элемента в файле XML.

Любые указатели были бы действительно полезны, поскольку он делает мою голову!

код у меня выглядит следующим образом:

<?php 
    $Products = simplexml_load_file('http://atsdistribution.co.uk/feeds/xml_all_products.aspx'); 


$con = mysql_connect(Details); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("catflaps_products", $con); 


foreach($Products->Product as $Product) 
{ 
$ProductID = $Product->ProductID; 
$Name = $Product->Name; 
$DropshipPrice = $Product->DropshipPrice; 
$SRP = $Product->SRP; 
$Brand = $Product->Brand; 
$Xline = $Product->Xline; 
$InStock = $Product->InStock; 
$Stock = $Product->Stock; 
$Barcode = $Product->Barcode; 
$Weight = $Product->Weight; 
$CategoryID = $Product->CategoryID; 
$Category = $Product->Category; 
$SmallImage = $Product->SmallImage; 
$LargeImage = $Product->LargeImage; 
$Description = $Product->Description; 

mysql_query("INSERT INTO test(ProductID, Name, DropshipPrice, SRP, Brand, Xline, InStock, Stock, Barcode, Weight, CategoryID, Category, SmallImage, LargeImage, Description) 
VALUES(`$ProductID`, `$Name` , `$DropshipPrice`, `$SRP`, `$Brand`, `$Xline`, `$InStock`, `$Stock`, `$Barcode`, `$Weight`, `$CategoryID`, `$Category`, `$SmallImage`, `$LargeImage`, `$Description`)") 
     or die(mysql_error()); 

} 

mysql_close($con); 


?> 

ответ

0
  1. Вы не должны использовать обратные кавычки внутри ЗНАЧЕНИЕ части. Нужно только указывать идентификаторы mysql (например, таблицы, имена столбцов). Я думаю, что если вы удалите его, ваша проблема будет решена.
  2. Вы должны использовать кавычки (обычные или «или») при цитировании строкового значения в части VALUES (но см. Ниже, есть лучший подход)
  3. Если вы выберите # 2, тогда вам нужно правильно избежать значений из XML с помощью mysql_real_escape_string в вашем случае. На самом деле это нарушение безопасности (см. SQL-инъекции), если вы этого не сделаете. Но даже если вы скажете, что это временное использование временного сценария и т. д., вы, вероятно, столкнетесь с другой ошибкой, когда в ваших данных xml есть однократная или двойная кавычка.
  4. . Лучший подход заключается в использовании инструкций подготовки PDO, тогда вы не заморачиваетесь на цитирование некоторые типы данных с кавычками или не делают этого - вы связываете определенный параметр с его типом данных. И помните, что m Функции ysql_ * устарели сегодня.

Так что этот код работает как шарм:

<?php 
$Products = simplexml_load_file('xml_all_products.xml'); 
$config = array('db' => array(
    'dbname' => 'test', 
    'host' => 'localhost:4040', 
    'username' => 'xx', 
    'password' => 'xxx' 
)); 
$db = new PDO('mysql:dbname='.$config['db']['dbname'].';host='.$config['db']['host'],$config['db']['username'],$config['db']['password']); 

foreach($Products->Product as $Product) 
{ 
    $ProductID = $Product->ProductID; 
    $Name = $Product->Name; 
    $DropshipPrice = $Product->DropshipPrice; 
    $SRP = $Product->SRP; 
    $Brand = $Product->Brand; 
    $Xline = $Product->Xline; 
    $InStock = $Product->InStock; 
    $Stock = $Product->Stock; 
    $Barcode = $Product->Barcode; 
    $Weight = $Product->Weight; 
    $CategoryID = $Product->CategoryID; 
    $Category = $Product->Category; 
    $SmallImage = $Product->SmallImage; 
    $LargeImage = $Product->LargeImage; 
    $Description = $Product->Description; 

    $ProductsRS = $db->prepare("INSERT INTO test(ProductID, Name, DropshipPrice, SRP, Brand, Xline, InStock, Stock, Barcode, Weight, CategoryID, Category, SmallImage, LargeImage, Description) 
         VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"); 

    $ProductsRS->execute(array($ProductID, $Name, $DropshipPrice, $SRP, $Brand, $Xline, $InStock, $Stock, $Barcode, $Weight, $CategoryID, $Category, $SmallImage, $LargeImage, $Description)); 
} 
+0

Спасибо так много! Это действительно работает как шарм! Я слишком долго не был в игре! Приветствия! – Ian

Смежные вопросы