0

ここに私のコードがあります

<? 
include '../dbConnect.php';


 $amp=trim($_POST['amp']);
//$amp='AMP8';
//$sql=mysql_query("select tblRepairQueue.ackNo,tblRepairQueue.repairStatus,tblRepairQueue.savedAt from tblRepairQueue,AMPcustomers where AMPcustomers.phone1=tblRepairQueue.phoneNo and AMPcustomers.id='".$amp."'");

$sql=mysql_query("select phone1 from AMPcustomers where id='".$amp."'");
$response = array();
while($row=mysql_fetch_array($sql))
{

$sql_query=mysql_query("select ackNo,repairStatus,savedAt from tblRepairQueue where phoneNo='".$row['phone1']."'");
while($row1=mysql_fetch_array($sql_query)){

    $ackNo=$row1['ackNo'];
$repairStatus=$row1['repairStatus'];
    $savedAt=$row1['savedAt'];

$response[]=array('ackNo'=>$ackNo,'repairStatus'=>$repairStatus,'savedAt'=>$savedAt);
}}
print json_encode($response);

 ?>

出力 m として取得

{"ackNo":"26101211236759","repairStatus":"Closed and Complete","savedAt":"2012-10-26 00:55:25",{"ackNo":"031212102614381","repairStatus":"Closed and Complete","savedAt":"2012-12-02 23:05:54"}

しかし、出力を次のようにしたい

[{"ackNo":"26101211236759","repairStatus":"Closed and Complete","savedAt":"2012-10-26 00:55:25"},{"ackNo":"031212102614381","repairStatus":"Closed and Complete","savedAt":"2012-12-02 23:05:54"}]

誰かが間違いを見つけるのを手伝ってくれますか、最後に角括弧を得るために何をしなければなりませんか

4

4 に答える 4

0

そのような出力が得られないことを再確認してください{"ackNo":"26101211236759","repairStatus":"Closed and Complete","savedAt":"2012-10-26 00:55:25",{"ackNo":"031212102614381","repairStatus":"Closed and Complete","savedAt":"2012-12-02 23:05:54"}

配列の配列を作成しているため、そのように印刷できません。

常に次のように印刷されます

[{"ackNo":"26101211236759","repairStatus":"Closed and Complete","savedAt":"2012-10-26 00:55:25"},{"ackNo":"031212102614381","repairStatus":"Closed and Complete","savedAt":"2012-12-02 23:05:54"}]
于 2013-09-12T12:33:02.577 に答える
0

このコードは実際に出力するはず[{...},...]です。そのため、お客様の側で何が問題だったのかを正確にお伝えすることはできません。$responseJson に変換する前に変数の構造をチェックして、何が問題なのかを確認してください。

このコードでは SQL インジェクションが許可されていることに注意してください。SQL クエリでパラメータ$ampとがエスケープされるように変更する必要があります。$row['phone1']現在マジック クォートに依存している場合でも、このソリューションのサポートは PHP 5.4 で削除されたため、このソリューションは将来的に保証されません (実際には保証されます)。

于 2013-09-12T12:31:55.153 に答える
0

私はこのコードを持っているので、これは少し奇妙です:

<?php
$array = array();
$array[] = array("ackNo"=>"26101211236759","repairStatus"=>"Closed and Complete","savedAt"=>"2012-10-26 00:55:25");
$array[] = array("ackNo"=>"26101211236780","repairStatus"=>"Closed and Complete","savedAt"=>"2012-10-26 10:55:25");
echo json_encode($array);
?>

そして、私はこの正しいフォームを取得します:

[{"ackNo":"26101211236759","repairStatus":"Closed and Complete","savedAt":"2012-10-26 00:55:25"},{"ackNo":"26101211236780","repairStatus":"Closed and Complete","savedAt":"2012-10-26 10:55:25"}]
于 2013-09-12T12:27:50.677 に答える
0

あなたが書いたものはうまくいくはずです:

http://ideone.com/ErV9fr

// How many to add
$response_count=3;

// Your response, just templated
$response_template=array(
    'response_number'=>0,
    'ackNo'=>'dffdgd',
    'repairStatus'=>'$repairStatus',
    'savedAt'=>'$savedAt'
);

// Your empty response array
$response = array();

for($i=0;$i<$response_count;$i++) {
    $response_template['response_number'] = $i; // Set the 'response number' to the     itteration.
    $response[]= $response_template; // Add the template to the collection
}

print json_encode($response);

結果:

[{"response_number":0,"ackNo":"dffdgd","re​​pairStatus":"$repairStatus","savedAt":"$savedAt"},{"response_number":1,"ackNo":"dffdgd", "repairStatus":"$repairStatus","savedAt":"$savedAt"},{"response_number":2,"ackNo":"dffdgd","re​​pairStatus":"$repairStatus","savedAt":"$savedAt "}]

これに加えて、$amp 変数をサニタイズする必要があります。現在の形式では、ユーザーがクエリをエスケープして、DB に対して任意のクエリを実行するのは簡単です。

http://www.php.net/manual/en/mysqli.real-escape-string.php

于 2013-09-12T12:49:36.320 に答える