2016-04-27 72 views
0

我有這樣的代碼,返回了SQL查詢,JSON消除回聲-ED尾隨逗號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

你爲什麼不使用替換while循環[破滅](http://php.net/manual/en/function.implode.php)呢? – Thamilan

+3

使用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

謝謝!但是,這會返回一個錯誤:「第20行的/var/www/html/project/jsonLoad.php中的字符串不支持致命錯誤:[]運算符」。你能給我進一步的幫助嗎? – 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++; 
    }