如何在使用 PHP 编码之前编辑 JSON 数组

在这里我想编辑产品图像的 JSON 数组,我想在我的 json 数组中发送图像名称(来自数据库)和图像路径(静态而不是来自数据库)


图片=(图片路径+图片名称)


我这样做


$query="SELECT * FROM products WHERE product_type='$product' ";

$result = mysqli_query($conn,$query);

$dbdata = array();

      if ($result) 

      {

        while ( $row = $result->fetch_array())  {

        $dbdata[]=$row;

        }


         echo json_encode($dbdata);

      }

输出是


"aprice": "90",

    "7": "85",

    "oprice": "85",

    "8": "0",

    "offer": "0",

    "9": "133259dac801eaeeb37b3876b3966ee4.jpg",

    "image": "133259dac801eaeeb37b3876b3966ee4.jpg"

在这里我想在图像名称之前添加图像路径


我试过这个


$query="SELECT * FROM products WHERE product_type='$product' ";

$result = mysqli_query($conn,$query);

$dbdata = array();

      if ($result) 

      {

        while ( $row = $result->fetch_array())  {

        $image="xyzabc.com/admin/upload/product_img/".$row['image'];

        $dbdata[]=$row;

        foreach($dbdata as $key => $value)

        {

          $dbdata[$key]['image'] = $image;

        }

        $mainarr = array('status' =>"200" , );

        }


         echo json_encode($dbdata);

      }

以上代码的输出


"7": "85",

    "oprice": "85",

    "8": "0",

    "offer": "0",

    "9": "133259dac801eaeeb37b3876b3966ee4.jpg",

    "image": "xyzabc.com/admin/upload/product_img/cf6e65aa87538f218c29cf3033954c31.jpg"

并且输出也不是预期的图像名称是最后一个产品的图像名称。如何做到这一点?


宝慕林4294392
浏览 97回答 2
2回答

互换的青春

这是一个建议。在您的 sql 中使用CONCAT(),以便您可以直接将整个结果集转储到您的json_encode()调用中。不需要写循环。未经测试的代码:$query = "SELECT aprice,                 oprice,                 offer,                 CONCAT('xyzabc.com/admin/upload/product_img/', image)          FROM products          WHERE product_type = ?"$stmt = $conn->prepare($query);$stmt->bind_param("s", $product);$stmt->execute();$result = $stmt->get_result();echo json_encode($result->fetch_all(MYSQLI_ASSOC));

白衣非少年

只需在添加到数组之前修改您的数据:$query="SELECT * FROM products WHERE product_type='$product' ";$result = mysqli_query($conn,$query);$dbdata = array();if ($result) {    while ( $row = $result->fetch_array())  {        $row['image'] = "xyzabc.com/admin/upload/product_img/".$row['image']; // <--HERE        $dbdata[] = $row;    }    echo json_encode($dbdata);}一些旁注:最好选择要发送的列,因为您可以修改表格并破坏另一侧。所以,在这种情况下,最好使用SELECT aprice, oprice, image, ... FROM Products ...您的查询可能容易受到 SQL 注入攻击。
打开App,查看更多内容
随时随地看视频慕课网APP