ECサイトのユーザー追加機能を作っています。
MySQLに接続しパスワードをハッシュ化した後以下のコードを動かします。($idはユーザー名、$passはハッシュ化したパスワードが入っています。)
$stmt=$pdo->prepare("INSERT INTO user (id,pass) VALUES(':id',':pass')");
$stmt->bindParam(':id',$id);
$stmt->bindParam(':pass',$pass);
$stmt->execute();
エラーは出ないのですがMySQLには$idや$passではなく:id,:passといった仮の値が追加されています。bindParam以降が全く効いていないのです。
この原因として考えられることは何でしょうか。またPHPのバージョンは5.4.41です。
> prepare("INSERT INTO user (id,pass) VALUES(':id',':pass')")
SQL 中で、プレースフォルダではなく文字列にしてしまっているからでしょう。
prepare("INSERT INTO user (id,pass) VALUES(:id,:pass)")
でいいのでは?
公式マニュアルの bindParam や prepare の例をご覧ください。
ありがとうございます。ユーザー追加できました。
2015/05/30 11:31:08ずっとbindParamが違うのだと思っていてprepareは見ていませんでした(汗)