2017-02-03 2 views
0

У меня есть файл в формате JSON 'extract.json', я получаю содержание для проходного результата, но мой код возврат только одну строки, Мой сценарий ==>JSON LOOP через Result PHP

$filename = "extract.json"; 
$str = file_get_contents($filename); 
if($str!=null) { 
    $decoded=json_decode($str,true); 
    $compteur = 0; 
    $compteur = count($decoded); 
    if(is_array($decoded)) { 
     foreach($decoded as $value) { 
      $var1= $value["val1"]; 
      $var2 = $value["val2"]; 
      $var3 = $value["val3"]; 
      $var4 = $value["val4"]; 
      $var5 = $value["val5"];.... 

      $injection_final = "INSERT INTO `Table`(
       `var1`, 
       `var2`, 
       `var3`, 
       `var4`, 
       `var5`,) 
       VALUES 
       ($var1,$var2,$var3,$var4,$var5)"; 
      $inj = mysqli_query($con1,$injection_final); 
     } 
    } 
} 

МОЕЙ JSON FILE ==>

[{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"}...] 

ответ

2

проблема в вашем SQL, so it should not insert even a single row. Вы используете даты, но не поставили их в quotes.Try, как показано ниже:

$filename = "extract.json"; 
    $str = file_get_contents($filename); 
    if($str!=null){ 
     /////.....rest of your code 

       $var1= $value["val1"]; 
       $var2 = $value["val2"]; 
       $var3 = $value["val3"]; 
       $var4 = $value["val4"]; 
       $var5 = $value["val5"]; 

       $injection_final = "INSERT INTO Table(var1,var2,var3,var4,var5,) 
       VALUES($var1,$var2,'$var3',$var4,'$var5')"; 
       echo $injection_final."<br>";//use this query to insert 

     ...... 
    } 
+0

уже исправил это, но ничего ... :( – Belicoff

+0

@Belicoff вы можете увидеть эхо эхо. –

+0

Да, конечно, я говорю это ясно, брат :), но запрос excute только один раз каждый раз :(:( – Belicoff

1

Формат вашего массива JSON не является правильным. Пожалуйста, обратитесь к следующей ссылке для примера:

http://www.w3schools.com/js/js_json_arrays.asp

+0

Ни один человек не имеет правильных данных. вы можете проверить здесь: http: //json.parser.online.fr/ (удалять точки в последнем). Это проблема sql. –

+0

Json array FOrmat is Correct brother :) спасибо – Belicoff

1
<?php 

$json_data = '[{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"},{"val1":"1","val2":"2","val3":"0000-00-00","val4":"1","val5":"1939-05-08"}]'; 
//uncomment the below line to read from file 
//$json_data = file_get_contents("extract.json"); 
$array_data = json_decode($json_data, true); 

for ($i = 0; $i < count($array_data); $i++) { 
    $table_column_names = ""; 
    $table_column_values = ""; 
    foreach ($array_data[$i] as $coulmn_name => $field_value) { 
     $table_column_names .= "`$coulmn_name`, "; 
     $table_column_values .= "'$field_value', "; 
    } 
    $table_column_names = rtrim($table_column_names, ", "); 
    $table_column_values = rtrim($table_column_values, ", "); 
    $sql_query = "INSERT INTO `Table` ($table_column_names) VALUES ($table_column_values)"; 
    //excute query here -- like if i just print the query 
    echo $sql_query."\n"; 
} 

Вот что вам нужно .. он будет выполнять все строки Вывод:

INSERT INTO `Table` (`val1`, `val2`, `val3`, `val4`, `val5`) VALUES ('1', '2', '0000-00-00', '1', '1939-05-08') 
INSERT INTO `Table` (`val1`, `val2`, `val3`, `val4`, `val5`) VALUES ('1', '2', '0000-00-00', '1', '1939-05-08') 
INSERT INTO `Table` (`val1`, `val2`, `val3`, `val4`, `val5`) VALUES ('1', '2', '0000-00-00', '1', '1939-05-08') 
INSERT INTO `Table` (`val1`, `val2`, `val3`, `val4`, `val5`) VALUES ('1', '2', '0000-00-00', '1', '1939-05-08') 
INSERT INTO `Table` (`val1`, `val2`, `val3`, `val4`, `val5`) VALUES ('1', '2', '0000-00-00', '1', '1939-05-08') 
+0

Я пробовал это, но вставка таблицы не имеет одного столбца моего json-файла. Я хочу разобрать какое-либо поле :) – Belicoff

+0

Затем он также должен содержать имя таблицы .. и вы можете показать свой json-файл ... –

1

Простое изменение этой линии от $var1,$var2,$var3,$var4,$var5)"; до

('$var1', '$var2', '$var3', '$var4', '$var5')";