为了您的方便而使用Sql小提琴here。
我从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"}
答案 0 :(得分: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));
答案 1 :(得分:2)
您只需选择所需的字段,因此您可以执行
echo json_encode($stmt->fetch(PDO::FETCH_ASSOC));
编辑:你现在提到名字是唯一的,所以上面就是你所需要的。
答案 2 :(得分:0)
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo json_encode($row);
如果结果中只有一行,则不需要while循环。