Php 仅从几个Mysql字段创建json数组,同时输出其他字段

Php 仅从几个Mysql字段创建json数组,同时输出其他字段,php,mysql,Php,Mysql,我只需要从下面的id和name字段创建一个json数组,同时输出其他字段。我如何才能最好地实现这一点?我试图得到如下输出: 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

我只需要从下面的
id
name
字段创建一个json数组,同时输出其他字段。我如何才能最好地实现这一点?我试图得到如下输出:

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"}
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>';
    }
稍后,我将以不同的形式使用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>';
    }
while($row=$stmt->fetch()){
echo$row['name']。.$row['age']。$row['address']。$row['pincode'];
$myarray['userId']=$row['id'];
$myarray['userName']=$row['name'];
echo json_编码($myarray);
回声“
”; }

还有更多字段将进入数组。在这个例子中,我只使用了几个。

尝试使用fetch\u数组

$result = $stmt->fetch_array();
json_encode($result);
不要使用mysql_*函数,因为它是去润滑的,相反,您可以使用mysqli_*或pdo语句 参考


您还可以使用fetchAll();但是我认为它将只在PDO中使用

为了减少行数和节省变量的使用,您可以这样做:

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"}
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>';
    }
while($row=$stmt->fetch()){
echo$row['name']。.$row['age']。$row['address']。$row['pincode'];
echo json_编码(数组('userId'=>$row['id'],'userName'=>$row['name']);
回声“
”; }
另一种方法是用foreach打印您的值。关于Json,和以前一样

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

    echo json_encode(array('userId' => $row['id'], 'userName' => $row['name']));
    echo '<br>';
}
while($row=$stmt->fetch()){
foreach(行作为$value)
{
回显$value.';
}
echo json_编码(数组('userId'=>$row['id'],'userName'=>$row['name']);
回声“
”; }
您所做的一切都很好。“我看不出有什么问题。我正在努力使它更干净、更短。@ScottWilson,OP正在寻找一种更好的方法。方法不错,但您的第二块代码会将所有内容输出两次。”。我用的是最上面的,但以防万一其他新手在这里检查…@jmenezes,你说得对。由于fetch的工作方式,它会打印两次。它给出了一个包含两个不同键的数组。(数字和列名)。如果您使用的是PDO,那么可以使用以下参数:PDO::FETCH_ASSOC