wpdbクラスのprepare()とMySQLの日時書式指定子が競合する
WordPressのプラグイン作成時などでwpdbクラスを利用する際、MySQLのDATE_FORMAT()関数などの日時フォーマット用書式指定子とwpdbクラスのprepareメソッドのプレースホルダーが競合するので、
<?php // wp-load.phpと同じディレクトリにこのサンプルコードが有る場合 require_once 'wp-load.php'; global $wpdb; echo $wpdb->get_var( $wpdb->prepare( "SELECT DATE_FORMAT(%s, %s)", date('Y-m-d H:i:s', current_time('timestamp')), '%Y年%m月%d日' ) ); // "SELECT DATE_FORMAT(%s, '%Y年%m月%d日')" とかやっちゃうとハマる
といった具合にしておけば動くんですけど、wpdbクラスってSQLの文法エラーが発生してもエラーメッセージを表示する記述を追記しておかないとそこで止まって終わり、Webサーバのエラーログにも何も落ちない、サーバステータスは200 OKを返してくれるで「え?」となりがち。