PHP加载XML流导致MySQL INSERT INTO表不再起作用

时间:2013-01-27 08:43:25

标签: php mysql xml database

我整天都在研究这个单一的问题,我无法理解它,所以我想问经验丰富的专业人士!

基本上,如果我删除XML连接线(顶部的前四个),我的“INSERT INTO”语句可以工作(使用静态值),如果我不删除它们,我就不会收到来自MySQL / PHP的错误消息。 ......他们根本不工作。

数据库全部设置为在所有字段上接受空值(暂时),并且它们现在都是VARCHAR ......直到我能弄清楚发生了什么。

XML Feed似乎连接没有问题,因为页面加载需要很长时间,当我ECHO输出时,所有正确的值都会进入。

最值得注意的是,当我回显INSERT INTO命令时,然后将其复制并粘贴到PHP My Admin中......实际的插入行完全正常......就在打开XML时;它不起作用。

有谁知道为什么我似乎无法使用:

$result = mysqli_query($cxn, $query);

将XML Feed连接到?

之后
$context  = stream_context_create(array('http' => array('header' => 'Accept: application/xml')));
$url = "https://thedatastream.xml";
$xml = file_get_contents($url, false, $context);
$xml = simplexml_load_string($xml);

foreach ($xml->row as $item) {

  $partNumber = strval(escape($item->PartNumber));
  $partName = strval(escape($item->Name));
  $partBrand = strval(escape($item->Manufacturer));
  $partCategory = strval(escape($item->CategoryName));
  $partGroup = strval(escape($item->Group));
  $partQty = intval(escape($item->Quantity));
  $partCostEx = floatval(escape($item->PriceCostEx));
  $partRetailEx = floatval(escape($item->PriceRetailEx));
  $partDesc = strval(escape($item->Description));
  $partHTMLDesc = strval(escape($item->HTMLDescription));
  $partImg = strval($item->image_large);
  $partPDF = strval($item->PDFURL);
  $partUpdated = strval(escape($item->StockRecordUpdated));
  $partETA = strval($item->ETADate);
  $partETAStatus = strval($item->ETAStatus);

  $query15 = "INSERT INTO `downloadTbl` (`partNumber`, `partName`, `Manufacturer`, `CategoryName`, `Group`, `Unit`, `PriceCostEx`, `PriceRetailEx`, `Description`, `HTMLDescription`, `image_large`, `PDFURL`, `StockRecordUpdated`, `ETADate`, `ETAStatus`) VALUES ('".$partNumber."', '".$partName."', '".$partBrand."', '".$partCategory."', '".$partGroup."', '".$partQty."', '".$partCostEx."', '".$partRetailEx."', '".$partDesc."', '".$partHTMLDesc."', '".$partImg."', '".$partPDF."', '".$partUpdated."', '".$partETA."', '".$partETAStatus."')";
  $result15 = mysqli_query($cxn, $query15);
}

1 个答案:

答案 0 :(得分:0)

我有答案!

下载XML文件导致数据库连接超时,

我只是在XML文件完成下载后创建了第二个连接,并将其用于INSERT语句。

$cxn2 = mysqli_connect($host, $user, $password, $db);

我认为您可以重新连接第一个数据库连接,而不是再创建第二个数据库连接。

感谢所有帮助解决此问题的人。