4

配列を受け取り、配列のキーと値のペアに基づいてSQLステートメントを作成する関数があります。例えば:

 name=>SomeKittens

になります

(`name`) VALUES ('SomeKittens')

唯一の問題は、などのMySQL文字列関数を使用する場合NOW()です。

creation_date=>NOW()

になる

(`creation_date`) VALUES ('NOW()')

NOW()エスケープされていることに注意してください。値がMySQL文字列関数であるかどうかを検出する方法はありますか?(もちろん$value === "NOW()"

私はJoomlaDBOを使用していますが、PDO/MySQLiソリューションも利用できます。

関連するチャットディスカッション

4

2 に答える 2

4

引数付きの関数を許可すると、SQLインジェクションからデータベースを保護できるとは思いません。
引数のない関数(NOW()など)のみを許可する場合は、リストをハードコーディングすることもできます。

于 2012-07-24T19:00:17.950 に答える
1

クエリを作成するときに、「NOW()」文字列ではなくNOW()関数呼び出しに変換することがわかっているMYSQL_NOWのような定数を定義したい場合があります。

于 2012-07-24T18:57:51.527 に答える