0

私は一日中この一つの問題に取り組んできましたが、それを軽視することはできませんので、ベテランの専門家に聞いてみようと思いました!

基本的に、XML接続線(上部の最初の4つ)を削除すると、「INSERT INTO」ステートメントが機能します(静的な値を使用)。削除しないと、MySQL/PHPからエラーメッセージが表示されません。それらは単に機能しません。

データベースはすべて、すべてのフィールドで(一時的に)nullを受け入れるように設定されており、今のところすべてVARCHARです...何が起こっているのか理解できるまでです。

ページの読み込みに時間がかかり、出力をECHOすると、すべての正しい値が入力されるため、XMLフィードは問題なく接続されているようです。

注意すべき最大のことは、INSERT INTOコマンドをエコーし​​、それをコピーしてPHPMyAdminに貼り付けることです...実際の挿入行は完全に正常に機能します...XMLがオンになっているときだけです。動作しません。

なぜ私が使用できないように見えるのか誰かが知っていますか:

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

XMLフィードが接続された後?

$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);
}
4

1 に答える 1

0

私は答えを持っています!

XML ファイルのダウンロードがデータベース接続のタイムアウトを引き起こしました。

XML ファイルのダウンロードが完了した後に 2 つ目の接続を作成し、それを INSERT ステートメントに使用しました。

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

2番目のデータベース接続を作成する代わりに、最初のデータベース接続を再接続するだけでよいと思います。

この問題の解決に協力してくれたすべての人に感謝します。

于 2013-01-28T04:23:46.740 に答える