2015-07-21 79 views
2

我无法插入此数组中的值。这里的例子:PHP MySQL插入数组

$arr = json_decode($_POST['dynfields'], true); 
    //{"dynfields":{"dynfields[0][DescRepair]":"Desc repair","dynfields[0][NestParts]":"Parts","dynfields[0][EdPrice]":"10","dynfields[0][DateRepair]":"2015-07-20","dynfields[1][DescRepair]":"Desc repair","dynfields[1][NestParts]":"Parts","dynfields[1][EdPrice]":"5","dynfields[1][DateRepair]":"2015-07-20"}} 

    foreach ($arr as $key => $fieldArray) { 
     foreach($fieldArray as $k => $v) { 
      echo $k . " - " . $v . "<br>"; // result: dynfields[0][DescRepair] - Desc repair 
              dynfields[0] [NestParts] - Parts 
              dynfields[0][EdPrice] - 10 
              dynfields[0][DateRepair] - 2015-07-20 
              dynfields[1][DescRepair] - Desc repair 
              dynfields[1][NestParts] - Parts 
              dynfields[1][EdPrice] - 5 
              dynfields[1][DateRepair] - 2015-07-20 

     } 
     //$query = mysqli_query($mysqli, "INSERT INTO repair (DescRepair, NestParts, EdPrice, DateRepair) VALUES ('?', '?', '?', '?')") or die(mysqli_error($mysqli)); 
    } 

这是我的代码,但我不知道如何在db中插入值。你能给我任何建议吗?谢谢。

回答

1

我对你的代码不太了解,但起初你的json不好,在帖子中,这是一个正确的json例子:

{ 
"dynfields": [ 
    { 
     "DescRepair": "Desc repair", 
     "NestParts": "Parts", 
     "EdPrice": "10", 
     "DateRepair": "2015-07-20" 
    }, 
    { 
     "DescRepair": "Desc repair", 
     "NestParts": "Parts", 
     "EdPrice": "5", 
     "DateRepair": "2015-07-20" 
    } 
    ] 
} 

然后你就可以用dynfields数据的foreach:

$myvar = json_decode($json,true); 
$data = $myvar['dynfields']; 


    foreach(array_keys($data) as $index){ 
     var_dump($data[$index]); 
    } 

那么你会得到这样的事情(的var_dump):

array (size=4) 
     'DescRepair' => string 'Desc repair' (length=11) 
     'NestParts' => string 'Parts' (length=5) 
     'EdPrice' => string '10' (length=2) 
     'DateRepair' => string '2015-07-20' (length=10) 
array (size=4) 
     'DescRepair' => string 'Desc repair' (length=11) 
     'NestParts' => string 'Parts' (length=5) 
     'EdPrice' => string '5' (length=1) 
     'DateRepair' => string '2015-07-20' (length=10) 
+0

我知道json的结构不好,但我没有找到另一种解决方案来从输入中获取价值并发送到php代码并在数据库中创建记录。如果你有更好的解决方案,我会很高兴看到它https://jsfiddle.net/1ox3Ltfr/1/。谢谢。 – diank

+1

将您的字段放入表单中,然后当您单击显示按钮时,请执行以下操作: var formData = $(“#formId”)。serialize(); 你已经通过AJAX发送给服务器,然后你会收到一个正确的数组,你可以转换为JSON或不 –

0

$query = mysqli_query($mysqli, "INSERT INTO repair (DescRepair, NestParts, EdPrice, DateRepair) VALUES ('?', '?', '?', '?')") or die(mysqli_error($mysqli))

relace每个?{$arr['xxxxx']}其中XXXXX是你的数组键

确保良好逃脱变量来防止SQL注入

提示:您可以使用PDO或准备语句

+0

谢谢,但并没有工作。 – diank