-1

ここであなたの便宜のためにSQLフィドル。

MySql テーブルからデータを取得し、それを json 配列に変換しています。すべてがうまく機能し、希望どおりの出力が得られましたが、これを改善 (短縮/改善) できる方法はありますか? 配列キーは同じままで、dbs 出力と一致する必要があります。

マイコード

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

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

    echo json_encode($myarray);

私の出力(上記のコードはこれを正常に出力します)

{"name":"Peter","age":"30","address":"1 Elm Street","pincode":"91550"}
4

3 に答える 3

2

Taking out all the redundancy, using proper prepared statements (assuming PDO) and adding error handling (at least a stub), you end up with this:

$stmt = $conn->prepare('SELECT name, age, address, pincode FROM json WHERE name = ?');
$stmt->execute(array('peter'));

if ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo json_encode($row);
} else {
    echo json_encode(array('status' => 'error'));
}

If you expect multiple rows:

echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
于 2013-05-25T11:17:28.613 に答える
2

必要なフィールドのみを選択するので、次のことができます

echo json_encode($stmt->fetch(PDO::FETCH_ASSOC));

編集:名前は一意であると述べたので、必要なのは上記だけです。

于 2013-05-25T11:19:04.043 に答える
0
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($row);

結果に行が 1 つしかない場合は、while ループは必要ありません。

于 2013-05-25T11:26:45.283 に答える