php - 使用循环或数组从表产品选项中提取所有值
问题描述
我有一个简单的市场。我有表产品和表 product_option
| id | codice_prodotto | attributo_chiave | valore_chiave |
| 1 | 001 | colore | rosso |
| 2 | 001 | taglia | m |
| 3 | 002 | taglia | s |
现在我想选择产品 001 的所有属性和值所以我在 php 中有我的查询
$query = "SELECT * from table WHERE codice_prodotto = '001'";
现在我想循环这个并提取键和值
colore = rosso
taglia = m
我怎样才能做到这一点?一个while循环不是正确的方法
while ($riga_risultato = $eseguo_query_prodotto->fetch_assoc()) {
// print_r($riga_risultato);
echo $riga_risultato['attributo_chiave'];
}
输出是(右)
tagliacolore
但是我想在不同的变量中有这个产品的属性和值,所以如果我有更多的记录没有问题。你能帮助我吗?也许我必须从查询选择中转换数组?谢谢
嗨,也许这可能是一个解决方案或有其他简单的方法?
// query
$query_prodotto = "SELECT * from prodotto_opzioni WHERE codice_prodotto = '001'";
$eseguo_query_prodotto = $connessione->query($query_prodotto) or die ("errore query". $connessione->error);
//estraggo i valori
while ($riga_risultato = $eseguo_query_prodotto->fetch_assoc()) {
// populate multidimensional array with all values I want
$js_arr[] = [
'attributo_chiave' => $riga_risultato['attributo_chiave'],
'valore_chiave' => $riga_risultato['valore_chiave']
];
}
//extract array
foreach ($js_arr as $pette){
echo $pette['attributo_chiave'].'='.$pette['valore_chiave'].'<br>';
}
解决方案
您的表基本上是一个非规范化的键值存储。这里的一种选择是使用带有聚合的数据透视查询来生成特定的键和值,例如
SELECT
codice_prodotto,
MAX(CASE WHEN attributo_chiave = 'colore' THEN valore_chiave END) AS colore,
MAX(CASE WHEN attributo_chiave = 'taglia' THEN valore_chiave END) AS taglia,
... -- other keys here
FROM yourTable
WHERE
codice_prodotto = '001'
GROUP BY
codice_prodotto;
推荐阅读
- scala - 从Option [String]中提取值的scala方式是什么?
- android - 在 Repository 或 ViewModel 中,在哪里转换 WebService 的结果?
- json - 邮递员在测试中检查数字的两位小数
- windows-10 - Windows 10 20H1 和 10H2 的 USB 性能不佳是否有原因
- flutter - 如何在状态更改时更新 BlocBuilder 之外的 SliverAppBar 小部件?
- asp.net - 为什么 swagger 在 chrome 或 firefox 中不起作用?
- javascript - 如何在空手道的参数字段值内提供字符串值?
- c# - 使用 Active Directory 身份验证以编程方式连接到服务结构群集
- mongoose - 如何在 mongodb 的嵌套结构中检索特定对象?
- sqlite - 重新创建父表后如何在 SQLite 中重新设置表 FOREIGN KEY