2012-06-29 43 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是一個關聯數組鍵作爲列的名稱和數組是值的值插入。