2012-05-24 2 views
-1

У меня есть некоторые данные в формате JSON в текстовом файле, как показано ниже. Мне нужно вставить эти данные в mysql, используя php, но не могу этого сделать.Как я могу вставлять данные из текстового файла в mysql?

{"address":"+92 334 6629424","service_center":"Test Sending Sms","id":3,"locked":0,"person":0,"protocol":0,"read":0,"reply_path_present":2,"seen":0,"error_code":0,"status":1,"date":1873326412,"thread_id":1,"type":-1} 

У моего файла PHP есть такой код.

<?php $source_file = "SMS2012-05-21.txt"; $handle = fopen("SMS2012-05-21.txt", "r"); 
$col_names = implode(",", fgetcsv($handle)); // Getting comma separated list of col name 

$link = mysql_connect('localhost', 'root', ''); 
mysql_select_db("messages"); 
while (($data = fgetcsv($handle)) !== FALSE) { 
$values = ""; 
foreach($data as $key => $value) { 
    if ($key != 0) $values .= ", "; 
    $values .= "'".mysql_escape_string($value)."'"; 
} 
mysql_query('INSERT INTO messages ('.$col_names.') VALUES ('.$values.')'); 
} 
?> 

Я не могу найти ни результата, ни ошибки. Может ли кто-нибудь помочь мне в этом отношении, где я ошибаюсь?

+2

Вы должны использовать 'json_decode' в текстовом файле с его данными JSON, а не с данными CSV. – xbonez

ответ

0

Вы должны использовать json_decode функцию для обработки данных в формате JSON.

<?php 


    $source_file = "SMS2012-05-21.txt"; 
    $string = file_get_contents($source_file); 
    $json = json_decode($string,true); 

    //DB Conn Handling Stuff 

    $cols = array(); $values = array(); 

    foreach($json as $key=>$value) 
    { 
     array_push($cols,'`' . $key . '`'); 
     if(is_string($value)) 
     { 
     array_push($values,'\''.$value.'\''); 
     } 
     else 
     { 
     array_push ($values, $value); 
     } 
    } 

    $col_name = implode(',',$cols); 
    $col_value = implode(',',$values); 

    $query = 'INSERT INTO messages('.$col_name.') VALUES ('.$col_value.')'; 
    mysql_query($query,$connection) or die(echo mysql_error());  

?> 
+0

Я получаю следующую ошибку в ответ на этот код. Предупреждение: array_push() ожидает, что параметр 1 будет массивом, строка, указанная в D: \ wamp \ www \ admin \ admin \ jsondecode2.php в строке 16, и это: Примечание: Преобразование массива в строку в D: \ wamp \ www \ admin \ admin \ jsondecode2.php в строке 21. Скажите, пожалуйста, где это должно быть исправлено. – IMRAN

+0

Извините, я допустил ошибку в array_push в порядке аргументов. Сначала массив, затем строку, которую нужно нажать. Я отредактировал сообщение, теперь это правильно –

+0

теперь несет следующую ошибку. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'read, reply_path_present, seen, error_code, status, date, thread_id, type) VALUES (92 3' в строке 1 – IMRAN

0

Может быть, я что-то пропустил, вы должны использовать его таким образом:

<?php $source_file = "SMS2012-05-21.txt"; 
$handle = fopen("SMS2012-05-21.txt", "r"); 
$data = fread($handle, filesize($source_file)); 
$jsonArray = json_decode($data, true); 

$keys = implode(',', array_keys($jsonArray)); 
$values = "'" . implode("','", $jsonArray) . "'"; 

$link = mysql_connect('localhost', 'root', ''); 
mysql_select_db("messages"); 

mysql_query('INSERT INTO messages ('.$keys.') VALUES ('.$values.')'); 
+0

im получает следующую ошибку в ответе этого кода: Warning: json_decode() ожидает, что параметр 1 будет строкой, ресурс указан в D: \ wamp \ www \ admin \ admin \ jsondecode2.php в строке 4, и это: Предупреждение: array_keys () ожидает, что параметр 1 будет массивом, null указан в D: \ wamp \ www \ admin \ admin \ jsondecode2.php в строке 6 и: Warning: implode() [function.implode]: недопустимые аргументы, переданные в D: \ wamp \ www \ admin \ admin \ jsondecode2.php в строке 6. Plz сообщит мне как можно скорее о его решении. – IMRAN

+0

Я отредактировал код, повторите попытку –

+0

Это не дало результата. У меня есть таблица сообщений, созданная до тех же имен столбцов, что и для ключей $. но этот код не дает никакой ошибки и никакого результата. – IMRAN

Смежные вопросы