-1

PHP でユーザーの姓名のリストを JSON 形式で返そうとしています。

私のPHPは次のよ​​うになります。

    $_Query = '
                    SELECT
                    Fname,Lname
                    FROM
                    users
                    WHERE
                    number = "'.$_REQUEST['number'].'"
                                                    ;';

    $SQLResult = mysql_query($_Query) or die(mysql_error());

    $_UserData = array();

    if(mysql_num_rows($SQLResult) <> 0){

            while($SQLRow = mysql_fetch_array($SQLResult)){
                    $_UserData['Fname'] = $SQLRow['Fname'];
                    $_UserData['Lname'] = $SQLRow['Lname'];
            }

    }
echo json_encode($_UserData);

フォーマットに複数の行が必要です

{"Fname":["First_name1","First_name2"],"Lname":["Last_name1","Last_name2"]}

もちろん。ただし、スクリプトは正しい条件で最後の行を返します

{"Fname":"Steve","Lname":"LastName"}

MySQl サーバーは、同じクエリで本来あるべきものを返します。

+--------------+-------------+
| Fname        | Lname       |
+--------------+-------------+
| First_name1  | Last_name1  |
| First_name2  | Last_name2  |
+--------------+-------------+

なぜこれが起こっているのですか?どうすれば修正できますか? ありがとう!

4

5 に答える 5

1
$_UserData['Fname'] = $SQLRow['Fname'];
$_UserData['Lname'] = $SQLRow['Lname'];

配列に新しい値を追加するのではなく、_UserData の同じ 2 つの要素を繰り返し設定しています。

于 2013-08-03T21:22:29.587 に答える
0

$_UserData 配列の 1 つの要素にしか割り当てられていないことに気付いたとき、あなたは自分自身を蹴ることでしょう。

次のようになります。

$_UserData = array();

if(mysql_num_rows($SQLResult) <> 0){

        while($SQLRow = mysql_fetch_array($SQLResult)){
                // Either...
                // Create a new entry in $_UserData with same structure and contents as $SQLRow
                $_UserData[] = $SQLRow;
                // OR more specific - say if the structures aren't identical
                // $DataRow=array();
                // $DataRow['Fname'] = $SQLRow['Fname'];
                // $DataRow['Lname'] = $SQLRow['Lname'];
                // $_UserData[] = $DataRow;
        }

}

乾杯

于 2013-08-03T21:31:03.360 に答える