2011-12-08 5 views
0

私は解決策が見つからないという奇妙な問題が発生しています。問題は、準備されたSQL文が値、パラメータにバインドされていないこと、またはexecute関数によって渡されていることです。代わりに、 ':blah'プレースホルダを挿入します。私が言ったように、私はbindParam、bindValueとこのメソッドはすべて結果なしで試みました。しかし、私は今それらをもう一度試してみます。PDOステートメントへのバインディングパラメータの問題がある

実行コールの直前に送信されるパラメータを出力しました。以下は

Array ([:username] => schenn [:salt] => NW5552wekj5155cNr52O54q56 [:hashpass] => 5e54240aec6294873d11d6ac3e5b135136a1b671 [:email] => [email protected] [:state] => OR [:country] => USA [:last_login] => 12/08/2011) 

コードです:

$query = "INSERT INTO player_acct (username, salt, hashpass, email, state, country, last_login) 
       VALUES (':username', ':salt', ':hashpass', ':email', ':state', ':country', ':last_login')"; 
$stmt = $pdoI->prepare($query); 
$params = array(":username" => $this->username, ":salt" => $this->salt, ":hashpass" => $this->hashpass, 
         ":email" => $this->email, ":state" => $this->state, ":country" => $this->country, ":last_login" => $this->last_login); 
$stmt->execute($params); 
+0

PDOとなステートメントの両方のためのErrorInfoからプリントアウトされ アレイ([0] => 00000 [1] => [2] =>) – Schenn

+0

それらはその後にロードポストから送信または生成されますオブジェクト。オブジェクトにはpdoが渡され、プロパティと一緒に使用されます。上記の配列は、params配列に格納されている情報です。 – Schenn

+0

可能性のある[PDO Prepare文がパラメータを処理していないPrepateステートメントの複製](0120-328-003) – outis

答えて

4

あなたはSQLでのプレースホルダを引用するはずの。あなたのSQL文字列として次のことを試してみてください。変数をバインドするとき

$query = "INSERT INTO player_acct (username, salt, hashpass, email, state, country, 
      last_login) VALUES (:username, :salt, :hashpass, :email, :state, :country, :last_login)"; 
+0

目盛りを外す –

+0

ありがとうあまりにも多くの時間が過ぎた – Schenn

0

あなたは、SQL文でバインドさの値を引用しないでください。

$query = "INSERT INTO player_acct (username, salt, hashpass, email, state, country, last_login) VALUES (:username, :salt, :hashpass, :email, :state, :country, :last_login)"; 

また、$this->emailなどが正しく設定されていることを確認してください。