mysqli
PHPライブラリでは、メソッドbind_param()
でパラメーターをクエリにバインドします。 bind_param()
の最初の引数はtypes
、各文字がデータ型パスを表す文字列です。たとえば、文字列は 's' です。
$query = "update users set update_usr_id = ? where user_id = ?";
$arg1 = ($update_usr_id=$usr_id) ? '2011-01-01' : 'CURRENT_DATE';
$arg2 = $update_usr_id;
パラメータとして NULL または CURRENT_DATE をどのように表すことができますか?
たとえば、「CURRENT_DATE」を文字列として試してみましたが、「0000-00-00」として投稿されました。(私が知る限り、違法な日付である「0000-00-00」は、明らかにかなりの数であるNULLを使用しない人々にとってのNULLのmysqlismです)。
パラメータを使用して、NULL と CURRENT_DATE をどのように使用できますか?
@Johanは、NULLが機能することを指摘しました。テストでは、これは正しいように見えますが、そうではありません。最初の NULL パラメータから始めて、すべてのパラメータが NULL に設定されます。
デフォルト値はこれとは関係ありません。INSERT ではなく UPDATE で列を NULL または CURRENT_DATE に設定したいことが何度もあります。そのため、デフォルト値はトランザクションに影響しません。
また、不十分な点をカバーするためにトリガーを作成するという考えは、かなりmysqli
悪いプログラミングです。私の時代にスパゲッティ トリガーを作成したことがあります。ログを更新するためのトリガーはその 1 つです。このようなトリガーは、コードが正しく維持される可能性がほとんどなく、定期的なメンテナンスの悪夢になります。