在 PHP 或 jQuery 中包含来自 MySQL 的重复数据

Posted

技术标签:

【中文标题】在 PHP 或 jQuery 中包含来自 MySQL 的重复数据【英文标题】:Enclose repeated data from MySQL in PHP or jQuery 【发布时间】:2021-07-05 15:45:15 【问题描述】:

我希望你能帮助我,我正在通过 phpmysql 检索数据到 jquery,目前,我得到了这个:

在这种情况下,Jane Doe 有两个订单,这意味着 jQuery 迭代中的两个对象。我不确定它是否可以在数据库级别解决,我认为那会很棒。

[
  
    "nombre": "Jane Doe",
    "telefono": "5512345678",
    "calle": "Far far away",
    "no_ext": "113",
    "colonia": "Cumbres",
    "cp": "12345",
    "id_orden": "1",
    "articulos": "2",
    "total": "120",
    "estado": "1"
  ,
  
    "nombre": "Jane Doe",
    "telefono": "5512345678",
    "calle": "Far far away",
    "no_ext": "113",
    "colonia": "Cumbres",
    "cp": "12345",
    "id_orden": "2",
    "articulos": "1",
    "total": "90",
    "estado": "3"
  
]

但是我怎样才能得到这个:

[
    "usuario":
            
                "nombre": "Jane Doe",
                "telefono": "5512345678",
                "calle": "Far far away",
                "no_ext": "113",
                "colonia": "Cumbres",
                "cp": "12345",
                "ordenes":
                    
                    "id_orden": "1",
                    "articulos": "2",
                    "total": "120",
                    "estado": "1"
                   
                    
                    "id_orden": "2",
                    "articulos": "1",
                    "total": "90",
                    "estado": "3"
                   

                
            
]

这是 PHP 的输出,代码如下:

$sql = "SELECT c.nombre, c.telefono, c.calle, c.no_ext, c.colonia, c.cp,  o.id_orden, o.articulos, o.total, o.estado, o.reg_fecha from CLIENTES c inner join  ORDENES o ON c.telefono = o.id_cliente ORDER BY o.id_cliente, o.id_orden ASC";

$result = mysqli_query($connection, $sql) or die("Error en la ejecución de la consulta " . mysqli_error($connection));
$emparray = array();
while($row =mysqli_fetch_assoc($result))
$emparray[] = $row;
     
echo json_encode($emparray);

这是数据库模式的小提琴

http://sqlfiddle.com/#!9/66d5ae/2

【问题讨论】:

@Strawberry 我编辑了我的问题,你能帮我吗?。 【参考方案1】:

我有一个像这样位于 htdocs 文件夹之外的 pdo 连接脚本...

<?php

$host = 'my_host';
$db   = 'my_db';
$user = 'my_user';
$pass = 'my_pass';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
try 
     $pdo = new PDO($dsn, $user, $pass, $options);
 catch (\PDOException $e) 
     throw new \PDOException($e->getMessage(), (int)$e->getCode());


?>

然后返回所需 json 的脚本可能是这样的 - 我忘记了从数组开头删除 Laura 和 Ivan 的最后一步,但这似乎是一个更简单的问题。顺便说一句,我确信这可以更经济地编写,因为我的 PHP 技能不符合它......

<?php
require('path/to/connection/stateme.nts');

$query = "
SELECT c.nombre
     , c.telefono
     , c.calle
     , c.no_ext
     , c.colonia
     , c.cp
     , o.id_orden
     , o.articulos
     , o.total
     , o.estado
     , o.reg_fecha
  from CLIENTES c
  join ORDENES o
    ON c.telefono = o.id_cliente
 ORDER
    BY o.id_cliente
     , nombre
";

$data = $pdo->query($query)->fetchAll(PDO::FETCH_BOTH);

$new_array = array();

foreach($data as $row)
$new_array['usuario'][$row[0]]['nombre']= $row['nombre'];
$new_array['usuario'][$row[0]]['telefono']= $row['telefono'];
$new_array['usuario'][$row[0]]['calle'] = $row['calle'];
$new_array['usuario'][$row[0]]['no_ext'] = $row['no_ext'];
$new_array['usuario'][$row[0]]['colonia'] = $row['colonia'];
$new_array['usuario'][$row[0]]['cp'] = $row['cp'];
$new_array['usuario'][$row[0]]['ordenes'][]['id_orden'] = $row['id_orden'];
$new_array['usuario'][$row[0]]['ordenes'][]['articulos'] = $row['articulos'];
$new_array['usuario'][$row[0]]['ordenes'][]['total'] = $row['total'];
$new_array['usuario'][$row[0]]['ordenes'][]['estado'] = $row['estado'];




//print_r($new_array);
$output = json_encode($new_array);

echo $output;
?>

【讨论】:

以上是关于在 PHP 或 jQuery 中包含来自 MySQL 的重复数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP 在WordPress主题中包含jQuery

PHP 在Wordpress中包含jQuery

在 Smarty 模板的 jQuery 语句中包含 PHP 文件

在 WordPress 中包含一个 jQuery 插件

在 Vue 项目中包含或初始化 jQuery 库的最佳方法是啥?

如何在 WordPress 主题中包含 jQuery?