php sql多个查询。这是一个大问题吗?

时间:2012-09-21 16:28:14

标签: php sql cart

我有一个购物车类,我存储产品ID。用户可以通过一个按钮打开购物车,该按钮可以在弹出窗口中打开购物车,因此必须在每个页面中加载购物车内容。

由于尺寸限制,我只能存储产品的ID,但我想向最终用户显示产品名称,因此对于每个元素,我需要进行查询并从数据库中获取产品数据。

这样做有什么重大缺点吗?或者有更好的解决方案吗?

PS:我可以获得购物车中所有产品的ID,然后执行一个获取任何所需产品数据的查询。我宁愿避免这种情况,因为我需要重写部分类,所以与以前的解决方案有什么实际区别吗?

PPS:在任何情况下,sql查询的总数不应该太高。当然我不介意,但我强烈怀疑任何用户会同时购买数百种不同的产品。

1 个答案:

答案 0 :(得分:2)

我只想强调你问题中的一句话:

  

因此,对于每个元素,我需要进行查询并从数据库中获取产品数据。

这是你的问题。你不需要这样做。您可以使用单个查询查询数据库,并询问ID列表中的所有产品。

SQL语言的一个有用部分是IN(....)子句。

$ids = [123, 884, 7848, 2882, 3232]; // let's say that is your input
$idList = implode(',', array_map('intval', $ids));
$sql = sprintf(
    "SELECT field1, field2, field3 FROM products WHERE products.ID IN(%s)",
    $idList
);

这是产品ID列表的单个查询。当您从数据库中获取数据时,您可以动态创建内存数据库(也称为 Hashtable ),以便您可以根据ID“获取”数据:

foreach($ids as $id)
{
    $concreteProduct = $rows[$id];
    ...
}

您也知道它为array,只是从数据库返回的ID值键入。由于ID是唯一的,这只适用于 tm

希望这有帮助。有些可能会称之为过早优化,但是,您应该了解这个概念,因为这可以在很多情况下使用。