0

私は、codeigniter を使用するプロジェクトの数が非常に限られている非常に小さなウェブショップに取り組んでいます。

スクリプトの開始時に、製品モデルは製品のリスト全体を取得し、結果をこのモデルのプロパティとして配列として保存します。

製品 ID は、単純にデータベースから自動インクリメントされた主キーです。そのため、誰かが商品をカートに追加すると、ID が POST で送信されます。次に、次の 3 つのことを確認します。

  • $id は整数でしょうか?
  • この整数は製品の総数を超えていますか?
  • この整数は製品 ID と一致しますか?

基本的に - 少し単純化されていますが - 私はこれを行います:

// 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;
4

2 に答える 2

2

データベースを使用することの主な利点の 1 つを見逃しています。それは、データベースがまさにこの種のことを得意としているということです。

すべての製品をメモリにロードしてから PHP で独自の検索を実行する代わりに、 のような SQL クエリを使用してデータベースで要求された製品を検索する必要がありますselect * from products where id = :id

于 2013-05-02T16:02:03.877 に答える
0
Does this integer exceed the total number of products?

これは常に正しいとは限りません。彼らが製品を削除するとすぐに、これは同期しなくなります。

つまり、id を整数にキャストし、製品のクエリを DB に直接キャストすることをお勧めします。プリロードされた配列に対してチェックしません。それは意味がありません。

于 2013-05-02T16:03:27.410 に答える