2

id以下のフィールドとフィールドのみからjson配列を作成しname、他のフィールドを出力する必要があります。どうすればこれを達成できますか?私は次のような出力を得ようとしています:

Peter    30     1 Elm Street 91550  {"userId":"1","userName":"Peter"}
James    31     2 Elm Street 91551  {"userId":"2","userName":"James"}
John     32     3 Elm Street 91552  {"userId":"3","userName":"John"}
Andrew   34     4 Elm Street 91553  {"userId":"4","userName":"Andrew"}

json 配列は、後で別の形で別の目的に使用します。配列キーは同じままである必要があり、変更できません。

出力スクリプトは、このように非常に単純です。

    $stmt = $conn->prepare("select id, name, age, address, pincode from json");
    $stmt->execute();

    while( $row = $stmt->fetch() ) {

        echo $row['name']." ".$row['age']." ".$row['address']." ".$row['pincode'];

    }

私は現在このようにしていますが、それを行うより良い方法が見つかりますか?

while( $row = $stmt->fetch() ) {
        echo $row['name']." ".$row['age']." ".$row['address']." ".$row['pincode'];

        $myarray['userId'] = $row['id'];
        $myarray['userName'] = $row['name'];

        echo json_encode($myarray);
        echo '<br>';
    }

配列に入るフィールドは他にもたくさんあります。この例では、ほんの一部しか使用していません。

4

2 に答える 2

1

行数を減らし、変数の使用を節約するために、次のようにすることができます。

while( $row = $stmt->fetch() ) {
        echo $row['name']." ".$row['age']." ".$row['address']." ".$row['pincode'];

        echo json_encode(array('userId' => $row['id'], 'userName' => $row['name']));
        echo '<br>';
    }

別の方法は、値をforeachで出力することです。Jsonについては、まあ、前と同じです...

while( $row = $stmt->fetch() ) {
    foreach ($row as $value)
    {
        echo $value.' ';
    }

    echo json_encode(array('userId' => $row['id'], 'userName' => $row['name']));
    echo '<br>';
}
于 2013-05-25T12:40:06.340 に答える
0

fetch_arrayのようにしてみてください

$result = $stmt->fetch_array();
json_encode($result);

廃止されたため、mysql_* 関数を使用しないでください。代わりに、mysqli_* または pdo ステートメントを使用できます REFER THIS

fetchAll()も使用できますが、PDO でのみ使用されると思います

于 2013-05-25T12:31:08.220 に答える