2016-07-25 108 views
0

我試圖從我的形式(createBuilder)將數據插入到我的數據庫,使用PDO和一個自定義的準備請求:PDO準備插入值

public function createUser($data) 
{ 
    $connect = $this->connectBDD(); 

    $rq = " INSERT INTO user (email, password, firstname, lastname, salt, role, addf, addl) 
      VALUES (:email, :password, :firstname, :lastname, :salt, :role, NULL, NULL)"; 

    $t = $connect->prepare($rq); 
    $t->execute([ 
     ':email'  => $data["email"], 
     ':password' => $data["plainPassword"], 
     ':firstname' => $data["firstname"], 
     ':lastname' => $data["lastname"], 
     ':salt'  => $data["salt"], 
     ':role'  => 'ROLE_USER' 
    ]); 

    return true; 
} 

,但我得到了以下錯誤:

SQLSTATE[42601]: Syntax error: 7 ERREUR: erreur de syntaxe sur ou près de « user » LINE 1: INSERT INTO user (email, password, firstname, lastname, sal... ^

這是因爲兩個'NULL'最後的值?我不這麼認爲,因爲如果我加2個變量放到我的數組,我仍然得到錯誤...

感謝您的幫助

+4

佔位符是沒有'''的值。請參閱PDO手冊。你看到有'''包裹的佔位符嗎? –

+0

已回答類似昨天,http://stackoverflow.com/questions/38548317/php-bound-parameters-database-call-wrong-number-of-parameters-if-i-use-a-colon/3 – chris85

+0

但沒有'如VALUES(:email,:password,:firstname,:lastname,:salt,:role,NULL,NULL),我得到一個「SQLSTATE [42601]:語法錯誤:7 ERREUR:erreur de syntaxe sur ouprèsde«用戶»「 – Macbernie

回答

2

':email'是與人物:em等字符串... :email(無')是佔位符。

不應該引用佔位符 - 引用它們變成非佔位符。

$sql = "... VALUES(:email, :password, :firstname, etc..."; 
+0

好的@Marc的引號,但沒有我仍然有錯誤。我已更新問題 – Macbernie

+0

'user'是保留字:https://dev.mysql.com/doc/refman/5.6/en/keywords.html –

+0

它不是保留字)關鍵字yes,但不保留。 –