2015-07-21 137 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