将PHP数组数据(从XML)插入SQL无效

时间:2018-05-12 06:33:28

标签: php multidimensional-array mysqli

我从Amazon API请求中收到了XML数据,并成功将其存储到数组中。

数组如下所示:

array(2)
 { 
   ["ListOrdersResult"]=> array(2)
    {
     ["Orders"]=> array(1)
     {
      ["Order"]=> array(94)
      {
       [0]=> array(25)
       {
        ["LatestShipDate"]=> string(20) "2018-05-09T06:59:59Z"
        ["OrderType"]=> string(13) "StandardOrder" 
        ["PurchaseDate"]=> string(20) "2018-05-09T06:09:01Z"
        ["AmazonOrderId"]=> string(19) "111-1111111-111111" 
        ["BuyerEmail"]=> string(38) "somecode@marketplace.amazon.com" 
        ["IsReplacementOrder"]=> string(5) "false" 
        and so on....

现在我尝试在我的SQL数据库中存储来自这94个Order数组的2个变量,但没有运气。

到目前为止我尝试过:

$orderdata = array();

foreach($orders as $results) {
  foreach($results as $amaorders) {
    foreach($amaorders as $numbers){
      foreach($numbers as $data => $finaldata){

$orderid = $finaldata['AmazonOrderId'];
$orderstatus = $finaldata['OrderStatus'];

$orderdata[] = "('$orderid','$orderstatus')";

          }

        }

      }

    }

$link = mysqli_connect("localhost", "sendjapa_amazon", "hayashir", "sendjapa_amazon");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

$imploded = implode(',', $orderdata);

$sql= mysqli_query($link, "INSERT into amazon_orders (AmazonOrderId, OrderStatus) VALUES '.$imploded.'' ");

if($sql === false){
  die(mysqli_error($link));
}

显示以下错误消息:

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近''。('111-11111等等。

当我var_dump($ orderdata)时,看起来它正确地将数据存储到$ orderdata中:

array(92)
 {
  [0]=> string(33) "('111-111111-111111','Shipped')"
  [1]=> string(35) "('222-222222-222222','Unshipped')"
  [2]=> string(33) "('333-3333333-3333333','Shipped')"
  [3]=> string(33) "('444-4444444-4444444','Shipped')"
   and so on...

当我var_dump($ imploded)时,它看起来像这样:

string(3163) "('111-111111-111111','Shipped'),('222-222222-222222','Unshipped'),('333-333333-333333','Shipped'),('444-44444-444444','Shipped'), and so on...

通常我将数据库连接代码放在一个单独的文件中,但我已将其包含在此处,以便您可以看到完整的代码。

谢谢

1 个答案:

答案 0 :(得分:0)

当你构建最终的SQL时,你有额外的引号和。' s。所以行中的代码应该是......

ws.Cells["A1:A25"].Style.Numberformat.Format = "#,##0.00 $";