私は自分のmysqlクエリの1つを気にしています...次のクエリは変数$ DB_idを受け取ります...その主キーを持つ行が既に存在する場合、クエリは更新を実行します。DUPLICATE KEY UPDATE ... WHEREまたはsubselectionを使用していますか?
$this->db->query(" INSERT INTO modules_text
( module_id,
module_content,
module_index
)
VALUES ( '{$DB_id}',
'{$content['text']}',
'{$index}'
)
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
");
今のところ、影響を受ける行が実際にユーザーに属しているかどうかは関係ありません。私は、UPDATE部分にwhereステートメントを追加したい、あるいは最初に影響を受けることが許されている行のsubseptionを作成したいと思います。以下のようなもの:
[...]
ON DUPLICATE KEY
UPDATE module_content = '{$content['text']}',
module_index = '{$index}'
WHERE module_post_id = '{$post]}'
今まで、私は解決策を見つけるdidntの...これ何とか可能です...すべてのヘルプは非常にたくさんありがとう...いただければ幸いです!!!!!
Saludosサシャ!
私は知っています...しかし、IDはクライアントによって渡されます...ユーザーはそれらのキーを変更しようとする可能性があります...私の場合、これは何とか安全ではありません... – Bosh
@Bosh - それはMySQLsの欠陥ではありません。クエリ文字列からデータベースIDを直接渡しているのであれば、それはあなたの設計上の欠陥です。 (なぜユニークなテキストモジュールの参照を格納していないし、代わりにそれを使用?) –
私は実際に私はそれをより安全にするために、すでにIDを難読化しますが、そのない1 ;-)ので、私は解決策を探しています、その設計上の欠陥の;-)知っていますパフォーマンスのために最も強いalgorythmsの...あなたは一意のテキストモジュールリファレンスでどういう意味ですか...私はグーグルではありませんでしたが、Axplanationを見つけませんでした...ありがとう! – Bosh