文字列のカラムを数値と比較すると、文字列は自動的に数値にキャストされる。
だいたいは 0扱いになるので 0と比較することになり、マッチしてしまう。
1 Prepare [1] SELECT * FROM hoge WHERE str=? 1 Execute [1] SELECT * FROM hoge WHERE str=0
PDOでバインドし忘れた変数には0が入るので、ほぼ全てがマッチすることになる。
見つけにくいバグの元になるのでバインド忘れは特に注意する。
指定したパラメータ以外の変数をバインドするとエラーになるくせに
指定すべきパラメータがバインドされてないときはエラーにならない、
というのはどう考えても仕様がおかしい。