2016-04-27 2 views
0

У меня есть этот код, который возвращает из запросов SQL, как JSONУдалить Запятая в эхо-е изд PHP

<?php 
$con=mysqli_connect("localhost","user","pw","db"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$con->set_charset("utf8"); 
$result = mysqli_query($con,"SELECT * FROM table"); 

echo "{"; 

while($row = mysqli_fetch_array($result)) 
{ 
    echo '"' . $row['RowId'] . '"' . ":{"; 
    echo '"Name": "' . $row['Name'] . '",'; 
    echo '"Surname": "' . $row['Surname'] . '",'; 
    echo '"MuEmail": "' . $row['MuEmail'] . '@mahidol.ac.th"'; 
    echo '},'; 
} 
echo "$bs"; 
echo "}"; 

mysqli_close($con); 
?> 

Но последний результат текста эхо-эд, что-то вроде

{ 
... 
"678":{ 
    "Name": "xxx", 
    "Surname": "yyy", 
    "MuEmail": "[email protected]"} 
,} 

Наблюдайте за конечной запятой, что делает JS JSON.parse() неудачным.

В любом случае, чтобы удалить эту запятую?

+0

Почему бы вам не использовать [взрывать] (http://php.net/manual/en/function.implode.php) вместо этого? – Thamilan

+3

use json_encode ($ row) – RJParikh

+2

Лучшей практикой было бы заполнить объект или массив, а затем использовать json_encode ($ yourarrayorobject) –

ответ

0

Использование создание собственно JSON

<?php 
$con=mysqli_connect("localhost","user","pw","db"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$con->set_charset("utf8"); 
$result = mysqli_query($con,"SELECT * FROM table"); 
while($row = mysqli_fetch_array($result)) 
{ 
$row['RowId'][] = array("Name"=>$row['Name'], "Surname"=>$row['Surname'], "MuEmail"=>$row['MuEmail']); 
} 
header('Content-Type: application/json; charset=UTF-8'); 
echo stripslashes(json_encode($rows)); 
?> 

Попробуйте это, он будет vlidate ваш JSON, а также решить проблему.

+0

Спасибо! Однако это возвращает ошибку «Неустранимая ошибка: [] оператор не поддерживается для строк в /var/www/html/project/jsonLoad.php в строке 20». Можете ли вы мне помочь? – srakrn

+0

Вы можете показать мне код вашего файла jsonLoad.php? –

+0

@SarvagnaMehta '$ row ['RowId']' уже является строкой в ​​тот момент, когда вы пытаетесь использовать ее как массив. – rinukkusu

0

Ну, вы можете использовать условие, чтобы увидеть, является ли это последней строкой, и если она не выводит запятую.

Смотрите обновленный код:

<?php 
$con=mysqli_connect("localhost","user","pw","db"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$con->set_charset("utf8"); 
$result = mysqli_query($con,"SELECT * FROM table"); 

$row_count = 0; 
$i = 0; 
$row_count = mysqli_num_rows($result); 

echo "{"; 

while($row = mysqli_fetch_array($result)) 
{ 
    $i++; 
    echo '"' . $row['RowId'] . '"' . ":{"; 
    echo '"Name": "' . $row['Name'] . '",'; 
    echo '"Surname": "' . $row['Surname'] . '",'; 
    echo '"MuEmail": "' . $row['MuEmail'] . '@mahidol.ac.th"'; 
    if($i < $row_count){ 
     echo '},'; 
    }else{ 
     echo '}'; 
    } 
} 
echo "$bs"; 
echo "}"; 

mysqli_close($con); 
?> 
0
  • Лучший подход, чтобы создать массив объектов, как

    $json = array(); 
    while($row = mysqli_fetch_array($result)) 
    { 
        // create an object 
        $obj = new stdClass(); 
        // add values to the object 
        $obj->Name = $row['Name']; 
        $obj->Surname= $row['Surname']; 
        $obj->MuEmail= $row['MuEmail'] . "'@mahidol.ac.th'";  
        // append the object to the array 
        $json["Reords"][] = $obj; 
    } 
    echo json_encode($json); 
    

  • По пути, просто заменить время цикла с следующим кодом

    $currentRow = 1; 
    $count = mysqli-num_rows($result); 
    while($row = mysqli_fetch_array($result)) 
    { 
        echo '"' . $row['RowId'] . '"' . ":{"; 
        echo '"Name": "' . $row['Name'] . '",'; 
        echo '"Surname": "' . $row['Surname'] . '",'; 
        echo '"MuEmail": "' . $row['MuEmail'] . '@mahidol.ac.th"'; 
        if($currentRow == $count) 
        { 
         echo '}'; 
        } 
        else 
        { 
         echo '},'; 
        } 
        $currentRow++; 
    } 
    
Смежные вопросы