在 PHP 或 jQuery 中包含来自 MySQL 的重复数据
Posted
技术标签:
【中文标题】在 PHP 或 jQuery 中包含来自 MySQL 的重复数据【英文标题】:Enclose repeated data from MySQL in PHP or jQuery 【发布时间】:2021-07-05 15:45:15 【问题描述】:我希望你能帮助我,我正在通过 php 从 mysql 检索数据到 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 的重复数据的主要内容,如果未能解决你的问题,请参考以下文章
在 Smarty 模板的 jQuery 语句中包含 PHP 文件