2011-12-08 28 views
0

我有一個奇怪的問題,我只是沒有找到一個解決方案。問題是,準備的SQL語句未值,參數結合,甚至將它們通過執行功能。相反,它會插入':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

從ERRORINFO爲PDO和statment兩個打印輸出是 陣列([0] => 00000 [1] => [2] =>) – Schenn

+0

它們從一個郵寄方式發送或產生然後裝入物體。該物體交給pdo,然後與它的屬性一起使用。上面的數組是存儲在params數組中的信息。的[PDO準備語句不處理參數] – Schenn

+0

可能重複(http://stackoverflow.com/questions/2434560/pdo-prepare-statement-not-processing-parameters) – 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

由於這是它! WOOOO這麼多時間已經過去了 – 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,etc ...設置正確。