1

1 回限りのパワーアップやユーザー アカウントの永続的な変更など、ユーザーが仮想アイテムを購入できるショップがあります。これらの購入により、さまざまなテーブルのさまざまなフィールドが変更される可能性があり、多くのアイテムが含まれる可能性があるため、新しい製品を追加するたびに PHP ファイルに新しい追加をコーディングしたくありません。

クエリを文字列として MySQL データベースに保存することを考えています。アイテムが購入されたときに、データベースから文字列を取得してそのように実行できます。

例: テーブルには、ユーザーがアイテムを購入するときに実行される文字列を含むitemsフィールドが含まれます。query_to_runUPDATE power_ups SET test = test WHERE test = 1

これはこれまでに使用されたことがありますか、またはこれを行うためのより良い方法はありますか?

4

4 に答える 4

2

データベースにクエリを保存することは、思ったよりも安全かもしれません。クエリを挿入する唯一の方法が独自のコードを使用する場合、実際にはインジェクション攻撃の危険にさらされることはありません (すべてのコードを自分で記述し、ID=$POST[ ...] それらの中で。

したがって、そうです、データベースに SQL を保持しても安全です。

これしかしです。

しかし、これらの種類のリクエストを処理するための単純なオブジェクトを作成する方がはるかに優れていると思います。UserID を受け取ってクエリでデータベースに送信する安全でセキュアなオブジェクトを非常に簡単に作成できます。データベースに SQL を保存する必要はありません (変更されるのは、ユーザー ID だけのようです)。例?

于 2012-08-12T13:07:09.133 に答える
1

この問題に自分で取り組むとしたら、OOP PHP を使用して、必要なデータベース編集のタイプによって分類されたさまざまなタイプのパワーアップを持つパワーアップ クラスを定義します。

あなたが探しているのはもっと速いものだと思います.あなたの解決策は(短期的には)これですが、データベース構造を更新したり、改善したいときに古いモデルが合わないことに気付いたりするとどうなりますか?

SQL クエリはハードコードされているため、すべてを書き直す必要があり、新しくパワーアップするたびに、それらを中心にソフトコード化されたフレームワークを構築した場合よりも時間がかかります。

したがって、将来的にアプリケーションの拡張性と柔軟性を犠牲にすることを気にしない限り、あなたの方法は実際に機能します。

于 2012-08-12T13:06:34.053 に答える
0

より効率的で脆弱性が少ないため、php を使用して行うことをお勧めします。

于 2012-08-12T12:58:20.857 に答える
0

あなたの現在の方法はまったく柔軟ではありません。たとえば、新しいアイテムを追加する場合、追加したばかりの新しいアイテムに関する情報を格納するために、新しいテーブルも追加しますか? 10,000 個の異なるアイテムがある場合、10,000 個の異なるテーブルを作成しますか? このアプローチには他にもいくつかの問題があります。

リレーショナル データベースのすべての利点を活用する設計を作成するには、リレーショナル データベース設計の基礎を参照する必要があります。

于 2012-08-12T13:13:47.077 に答える