php - 使用 PDO 从两个表中获取 JSON

标签 php mysql arrays json mysqli

我试图从 MySQL 数据库中的两个表中获取一个 JSON 对象,但没有任何返回。

product table: id, title, description, price
product_colors table: id, product_id, product_color

我的 PHP 代码:

$st = $conn->prepare ('SELECT `product`.id , `product`.title, `product`.description, `product`.price, GROUP_CONCAT(`product_colors`.product_color) AS colors FROM `product` LEFT JOIN `product_colors` ON `product`.id = `product_colors`.product_id GROUP BY `product`.id');


$st->execute();
$products = [];
$rows = $st->fetchAll(\PDO::FETCH_ASSOC);

foreach ($rows as $row) {
    $row['product_colors'] = explode(',', $row['product_color']);
    $products[] = $row;
}
echo json_encode ($products);

这是我想要得到的:

[
  {
  id: 4,
  title: 'Car',
  description: "Pellentesque orci lectus",
  price: '120$',
  product_color: ['Red', 'Blue', 'Black']
  },

  {
  id: 6,
  title: 'Bus',
  description: "orci lectus",
  price: '10$',
  product_color: ['White', 'Blue', 'Green']
  }
]

最佳答案

所以最后我得到了答案,首先查询是正确和完美的,获取和循环中的错误,所以这是完美的解决方案并且更容易:

$rows = array();
while($r = mysqli_fetch_assoc($sth)) {
    $r['colors']=explode(',', $r['colors']); //colors like what i named the GROUP_CONCAT
    $rows[] = $r;

关于php - 使用 PDO 从两个表中获取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514765/

相关文章:

php - 根据其中的当前值更新mysql数据库

mysql - 从其他表检索数据后Mysql中的事件调度程序

php - 将表单值插入数据库

c - 从数组中读取两个字符作为C中的一个十六进制数

javascript - 提取元素的 HTML

php - Paypal Payments Pro Sandbox 错误 很抱歉,我们现在无法完成您的付款。请稍后再试

mysql - 使用索引列的 MySQL 查询速度慢得令人痛苦

php - 从 Paypal 支付意图多维数组中获取值

python - 基于二维数组中的一列对数据进行分箱,并使用 cython 估计每个箱中的平均值

即使在设置 date_default_timezone_set 之后,PHPExcel 也会得到错误的时区