0
私の仲間のすべてのコーダーに挨拶...コードワールドです。PHP SQLSRV return JSON
今回はSQL Serverデータベースを使用していますので、構文に合わせて調整しています。
JSONを返そうとしていますが、正しい書式設定ができないようです。そこに、
{"data":[["", "0000111111", "JBR", "00000999999", "AMERICA INC", "Jan 1 1900 12:00AM", "", "55"]["", "0000777777", "7ALEXANDER LOG", "000222222", "NORRIS INC", "Jan 1 1900 12:00AM", "", "56"]]}
あなたが気づく場合:上記のコードを使用して
<?php
$select = "SELECT
CONCAT('\"',COALESCE('',''),'\"') AS EDIT
,CONCAT('\"',COALESCE([FOR_PARTNER],''),'\"') AS PARTNER_CODE
,CONCAT('\"',COALESCE([FOR_NAME],''),'\"') AS PARTNER_NAME
,CONCAT('\"',COALESCE([SHP_PARTNER],''),'\"') AS SHIPPER_PCODE
,CONCAT('\"',COALESCE([SHP_NAME],''),'\"') AS SHIPPER_NAME
,CONCAT('\"',COALESCE([MODDATE],''),'\"') AS MODDATE
,CONCAT('\"',COALESCE([MODUSER],''),'\"') AS MODUSER
,CONCAT('\"',COALESCE([ID],''),'\"') AS ID
FROM
[main].[dbo].[exceptions]";
$query = sqlsrv_query($dbc, $select);
$resnum = sqlsrv_num_rows($query);
// here is where the error lies
echo "{\"data\":[";
$i = 1;
while($row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC))
{
echo "[";
echo implode(', ', $row);
echo "]";
if($i < $resnum){
echo ",";
}
$i++;
}
echo "]}";
sqlsrv_free_stmt($query);
?>
、このように見えますが返されるJSON:私のPHPスクリプトで
、私はこの下のコードを持って内側の配列をカンマで区切ることはできません。
{"data":[["", "0000111111", "JBR", "00000999999", "AMERICA INC", "Jan 1 1900 12:00AM", "", "55"],["", "0000777777", "7ALEXANDER LOG", "000222222", "NORRIS INC", "Jan 1 1900 12:00AM", "", "56"]]}
私はMYSQLと同じ構文を使用しましたが、それはもちろんMYSQLです。私は上記のSQLSRVを使用しています。 IMPLODEがこれを理解しているかどうかはわかりません。
要するに、内部配列を区切るためにカンマを取得する必要があります。
誰か私のエラーが表示されますか?
ご協力ありがとうございます。ここで
はそれをしないでください。あなた自身のjsonを構築しないでください。 NORMALクエリを実行し、NORMAL結果セットを返し、次にネイティブPHPデータ構造を構築します。それが終わると、その構造体上で 'json_encode()'を実行することができ、問題はなくなります。あなたのバージョンは明らかに動作しておらず、json注入攻撃に対しても脆弱です。 –