我正在使用codeigniter开展一个非常小的网上商店,项目数量非常有限。
在脚本开始时,产品模型获取整个产品列表,并将结果存储为数组作为此模型的属性。
产品ID只是数据库中自动递增的主键。因此,当某人将某个产品添加到购物车时,ID将通过POST发送。然后我检查了三件事:
基本上 - 尽管略有简化 - 我这样做:
// Count total number of items
$total = count($this->productArray)
if (!(int)$id || $id > $total)
return false;
foreach($this->productArray as $product) {
if ($product['id'] == $id)
return true;
}
return false;
答案 0 :(得分:2)
你错过了使用数据库的一个主要好处,就是它非常擅长这类事情。
您应该使用select * from products where id = :id
等SQL查询在数据库中搜索所请求的产品,而不是将所有产品加载到内存中,然后在PHP中执行自己的搜索。
答案 1 :(得分:0)
Does this integer exceed the total number of products?
这并非总是如此。一旦他们删除了产品,就会失去同步。
那说更好的想法是将id转换为整数,并直接在DB上查询产品。不检查预加载的数组;这毫无意义。