-1

Sql fiddle 在这里为您提供方便。

我正在从 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

取出所有冗余,使用适当的准备好的语句(假设 PDO)并添加错误处理(至少一个存根),你最终会得到:

$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'));
}

如果您期望多行:

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);

如果结果中只有一行,则不需要 while 循环。

于 2013-05-25T11:26:45.283 回答