PDO插入动态字段

时间:2014-12-03 04:39:57

标签: php mysql 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(){}
}

我想根据我的类别的值插入字段,例如,如果category的值为= left,那么pdo语句应该是这样的,

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

但它不起作用。我得到错误sql语法

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

提前谢谢。

2 个答案:

答案 0 :(得分:1)

  

“例如,如果category的值为= left,那么pdo语句应该是这样的”

那是因为left是一个MySQL保留字:

因此,您需要在反引号中包含$category

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

right一样,您是否应该决定使用该词。

  • 请参阅上面的链接以获取完整列表。

答案 1 :(得分:-1)

您应该创建一个新的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));