2012-06-29 40 views
-4

使用PHP的PDO和预处理语句,我该如何实现以下内容?如何使用PHP PDO实现'INSERT'

$sql = 'insert into $tablename ($var1, $var2, $var3, ...) VALUES (:placeholder1, :placeholder2, ...)'; 

谢谢。

+2

如果您的意思是您想要插入到动态选择的列的动态选择表中,则必须通过将变量连接在一起来构建表和列。你不能使用占位符(尽管你可以在'VALUES'中使用它们)。建议检查可能的表名称的白名单。 –

+0

@Michael检查表或反射API或ORMs。 –

+4

6个问题,9个答案,0个接受。请参阅[如何接受答案的工作?](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – DaveRandom

回答

1

下面是做到这一点的一种方法:

$sth = $dbh->prepare('INSERT INTO '.$tablename.' ('.implode(',', array_keys($inserting)).') VALUES ('.str_pad('', count($inserting)*2-1, '?,').')'); 
$sth->execute(array_values($inserting)); 

哪里$tablename是表的名称和$inserting是一个关联数组键作为列的名称和数组是值的值插入。