匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

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回まで
  • 13歳以上
  • 登録:2015/05/30 10:05:51
  • 終了:2015/05/30 11:31:18

ベストアンサー

匿名回答1号 No.1

匿名回答1号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2015/05/30 10:39:06

> 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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません