2014-12-03 27 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));