(Last Updated On: 2018年8月13日)MySQLには文字エンコーディングを変更する「SET NAMES」SQL文が用意されています。(PostgreSQLも同様のSQL文、SET CLIENT_ENCODINGがあります)この機能はSQLコンソールからは使ってよい機能ですが、アプリケーションからは使ってはならない機能です。SQLインジェクションに脆弱になる場合があります。 Ruby on Railsの本を読んでいて、ActiveRecordを説明している部分にMySQLの文字エンコーディングを変更する場合の例としてSET NAMESが利用されていました。アプリケーションからはSET NAMESは使ってはならない事を周知させるのは結構時間が必要かなと思いました。 PHPも5.2の途中からMySQLモジュールにlibmysqlの文字エンコーディング設定APIのラッパー関数が
![SET NAMESは禁止](https://cdn-ak-scissors.b.st-hatena.com/image/square/9d2015857e00558eb990db2db4a4490aa83e71f0/height=288;version=1;width=512/https%3A%2F%2Fblog.ohgaki.net%2Fwp-content%2Fuploads%2F2013%2F11%2Fcropped-blog_header-2.jpg)