2013-10-08 6 views
0

У меня есть PHP-файл, который кодирует данные JSON и когда я просмотреть вывод JSON, когда его один блок данных я получить правильный синтаксис JSON кода это пример: single data blockНеверный формат JSON из PHP JSon закодировать

Но когда результаты JSON в кратном блока данных он генерирует неверный формат JSON как это: multiple data blocks

Это мой PHP код:

<?php 
header('Content-Type: application/json; charset=utf-8', true,200); 
DEFINE('DATABASE_USER', 'xxxxx'); 
DEFINE('DATABASE_PASSWORD', 'xxxxxx'); 
DEFINE('DATABASE_HOST', 'xxxxxxxxxxx'); 
DEFINE('DATABASE_NAME', 'xxxxxxxx'); 

// Make the connection: 
$dbc = @mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASSWORD, 
DATABASE_NAME); 
$dbc->set_charset("utf8"); 
if (!$dbc) { 
trigger_error('Could not connect to MySQL: ' . mysqli_connect_error()); 
} 


if(isset($_GET['keyword'])){//IF the url contains the parameter "keyword" 
$keyword = trim($_GET['keyword']) ;//Remove any extra space 
$keyword = mysqli_real_escape_string($dbc, $keyword);//Some validation 

$query = "select name,franco,alpha,id,url,songkey,chord from song where name like '%$keyword%' or franco like '%$keyword%'"; 
//The SQL Query that will search for the word typed by the user . 

$result = mysqli_query($dbc,$query);//Run the Query 

if($result){//If query successfull 
if(mysqli_affected_rows($dbc)!=0){//and if at least one record is found 
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){ //Display the record 

$data = array(); 
$data = $row; 
echo $_GET[$callback]. ''.json_encode($data).''; 
} 
}else { 
echo 'No Results for :"'.$_GET['keyword'].'"';//No Match found in the Database 
} 

} 
}else { 
echo 'Parameter Missing in the URL';//If URL is invalid 
} 
?> 

ответ

2

Это происходит потому, что вы JSON-кодирующий одну строку из результат установленный вовремя. Это недействительная структура JSON, если ожидающий клиент ожидает этого.

Вероятно, вам нужно поместить каждую строку в качестве записи в массив, а затем JSON-кодировать и эхо результирующий массив.

Как это:

if($result){//If query successfull 
    if(mysqli_affected_rows($dbc)!=0){//and if at least one record is found 
     $array = array(); 
     while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){ //Display the record 
      $array[] = $row; 
     } 
     echo json_encode($array); 
    } 
} 
+0

Спасибо Майка, это решить мое problem.thank вы так много приятеля – Bishak

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