gpt4 book ai didi

php - 将表 ID 存储在另一个表中以便稍后提取数据

转载 作者:行者123 更新时间:2023-12-01 00:36:25 25 4
gpt4 key购买 nike

我为合适的标题苦苦挣扎,但希望我描述的足够体面。

我将不同的 id 存储在一个表中,以便稍后显示具有 id 的行的数据并排除其他未选择的行。

我的 products 表如下所示(例如):

╔═══════╦═════╗
║ name ║ buy ║
╠═══════╬═════╣
║ apple ║ 1,3 ║
║ fanta ║ 1,2 ║
║ candy ║ 2,3 ║
╚═══════╩═════╝

其中 buy 包含 shop 表中行的 id

我的 shop 表如下所示(例如):

╔════╦══════════════════╗
║ id ║ url ║
╠════╬══════════════════╣
║ 1 ║ www.google.com ║
║ 2 ║ www.facebook.com ║
║ 3 ║ www.youtube.com ║
╚════╩══════════════════╝

我想要完成的是我的 products 表“理解” buy 包含我的 shop 表中不同行的 id,并且仅显示这些行的数据。所以 apple 将为 13 显示 url不会 2

我的模式看起来像这样:

<?php

include 'core/pdo.php'; // the database connection

// this is to grab data for the selected products modal (title of product only)

$id = $_GET['id'];
$query = "SELECT * FROM product WHERE id = :id";
$statement = $pdo->prepare($query);
$statement->bindParam(":id", $id);
$statement->execute();

$row = $statement->fetch();

$productName = $row["name"];

// this is where i struggle

$query2 = "SELECT * FROM products INNER JOIN shop ON products.buy = shop.ID";
$statement2 = $pdo->prepare($query2);
$statement2->execute();
$result = $statement2->fetchAll();

?>

<h1 ><?php echo $productName ?></h1>

<table class="table">
<thead>
<tr>
<th scope="col">Website</th>
</tr>
</thead>
<tbody>
<?php
foreach ($result as $row) {
echo '<tr>';
echo '<td class="align-middle">'.$row["url"].'</td>';
echo '</tr>';
}
?>
</tbody>
</table>

如您所见,我正在尝试使用:$query2 = "SELECT * FROM products INNER JOIN shop ON products.buy = shop.ID";

但它显示了所有内容。

如果是为了任何信息,我使用 implode 来分隔不同的 ID。代码如下所示:

$statement->bindParam(":buy", implode(',', $_POST['selected_shops']));

感谢您的帮助!!! :-)

最佳答案

您的“购买”列是可枚举的吗?您必须将 (1,3) 作为字符串处理并计算出查询才能读取,这比使用外键的处理速度要慢。

在我看来,那个表结构没有规范化。为什么不是多重关系表:

餐 table 产品

Id   Name 
1 apple
2 fanta
3 candy

餐 table 店

Id   url 
1 www.google.com
2 www.facebook.com
3 www.youtube.com

Table ShopProducts

Id   IdProduct  IdShop 
1 1 1
2 1 3
3 2 1
4 2 3
3 3 2
4 3 3

示例查询:

SELECT * FROM products 
INNER JOIN ShopProducts ON ShopProducts.IdProduct = products.ID
WHERE IdShop IN (1,2)

例如,将检索商店 1 和 2 中的所有产品信息。这样,您就可以让一个产品出现在多个商店中。您甚至可以从 ShopProducts 中删除 ID 列,并将 IdProduct 和 IdShop 都作为复合主键和外键,使它们成为唯一的组合。

关于php - 将表 ID 存储在另一个表中以便稍后提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49012448/

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