匿名質問者

PHPのPDOでのINSERT(プリペアドステートメント)についての質問です。

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です。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2015/05/30 11:31:18

ベストアンサー

匿名回答1号 No.1

> prepare("INSERT INTO user (id,pass) VALUES(':id',':pass')")
SQL 中で、プレースフォルダではなく文字列にしてしまっているからでしょう。
prepare("INSERT INTO user (id,pass) VALUES(:id,:pass)")
でいいのでは?

公式マニュアルの bindParam や prepare の例をご覧ください。

匿名質問者

ありがとうございます。ユーザー追加できました。
ずっとbindParamが違うのだと思っていてprepareは見ていませんでした(汗)

2015/05/30 11:31:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません