2014-12-03 58 views
0

我有這個功能在我的課PDO插入到充滿活力的領域

public function insertnewRec($name,$lastname,$category){ 
    try{ 
    $cmd = $this->connection->prepare('INSERT into user (fname,lname,$category) values(?,?,?)'); 
    $cmd->execute(array($name,$lastname,$category)); 
    } 
    catch(){} 
} 

我想插入到我的類別的值的字段的基礎,例如,如果類別的值=左邊則PDO聲明應該像現在這樣,

insert into user(fname,lname,left) values etc..... 

,但它不是working.I得到錯誤的SQL語法

$cmd = $this->connection->prepare('INSERT into user (fname,lname,$category) values(?,?,?)'); 

預先感謝您。

+0

它把所有的字段和表名成反勾一個很好的做法。只要你這樣做,錯誤就會消失。 – lightbringer 2014-12-03 04:52:22

回答

1

「例如,如果類別的值=左側,則PDO的說法應該喜歡這樣的」

這是因爲left是一個MySQL的保留字:

因此,你需要在反引號包$category

INSERT into user (fname,lname,`$category`) 

由於這個詞right,你應該決定也用這個詞。

  • 查看上面的鏈接獲取完整列表。
+0

SQLSTATE [42S22]:未找到列:1054'字段列表'中的未知列'$ category' – ashTon 2014-12-03 05:15:14

+0

使用[雙引號而不是單引號](http://php.net/manual/en/language.types (',',?)「);如同$ cmd = $ this-> connection-> prepare(」INSERT into user(fname,lname,'$ category')values(?,?,?)「); (反引號在$類別附近) – Mikey 2014-12-03 05:25:56

+0

這必須是你記憶中的一個;) – 2014-12-03 16:41:20

0

您應該創建一個新的PDO對象

// Replace `$category` with a parameter `:category` 
    $cmd = $this->connection->prepare('INSERT into user (fname,lname,:category) values(?,?,?)'); 

// bind $category and pass it into the execute() call inside an array 
    $cmd ->execute(array('category'=>$category));