gpt4 book ai didi

php - 需要 mysql RIGHT join 帮助

转载 作者:行者123 更新时间:2023-11-29 22:17:03 25 4
gpt4 key购买 nike

这是 mytable 结构?

table:category
id name
1 x
2 y

table:subproduct
id cat_id name myval
1 1 xyz test
2 1 abc test2

所以基本上我想从子产品中为类别表的每个 id 选择所有值并将其显示在 php 的数组中?

这是我的 PHP 代码

$sqlnew = "SELECT c.cat_id,c.cat_title,s.sub_id,s.sub_title,s.store_cashback FROM category c JOIN subproduct s ON c.cat_id = s.pid";
$pdo = getDB();
$stmtnew = $pdo->query($sqlnew);
$resultnew = $stmtnew->fetchAll();
var_dump($resultnew);

我正在使用 PHP PDO。

最佳答案

如果您想获取具有特定类别 ID 的所有项目,您应该执行以下操作:

$statement = $pdo->prepare("SELECT * FROM subproduct INNER JOIN category " .
"ON category.id = subproduct.cat_id WHERE category.id = :id");
$statement->bindValue(":id", $category_id, PDO::PARAM_INT);
$statement->execute();
$data = $statement->fetchAll();

您可以使用它来单独获取每个类别 ID 并构建一个数组,如下所示:

$statement = $pdo->query("SELECT id FROM category;");
$ids = $statement->fetchAll(PDO::FETCH_COLUMN, 0);
$data = array();
foreach($ids as $id)
{
$statement = $pdo->prepare("SELECT * FROM subproduct INNER JOIN category " .
"ON category.id = subproduct.cat_id WHERE category.id = :id");
$statement->bindValue(":id", $id, PDO::PARAM_INT);
$statement->execute();
$data[$id] = $statement->fetchAll();
}
print_r($data);

我对此并不着迷,因为它看起来效率低下,而且我不喜欢循环查询。您还可以一次请求所有数据,然后重新排列:

$statement = $pdo->query("SELECT * FROM subproduct");
$data = array();
while($subproduct = $statement->fetch(PDO::FETCH_ASSOC))
{
$id = $subproduct['cat_id'];
if (!isset($data[$id])
$data[$id] = array();
array_push($data[$id], $subproduct);
}
print_r($data);

我也不太喜欢这个,因为使用 PHP 对 MYSQL 数据进行排序感觉不对,因为那是 MYSQL 的工作。我可以请求 MYSQL 对数据进行排序,但是数据仍然需要分解为多维数组,所以我不确定这是否有帮助。

关于php - 需要 mysql RIGHT join 帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com