2011-08-16 33 views
2

我已經創建了一個簡單的插件。它在後端有一個配置站點,用戶站點有一些功能。我需要將一些用戶選擇保存到數據庫中。在開始時,我使用$ wpdb-> insert()和$ wpdb-> update()方法,但在讀取https://codex.wordpress.org/wpdb_Class#Protect_Queries_Against_SQL_Injection_Attacks後,我想將其更改爲$wpdb->query($wpdb->prepare())

但是我怎樣才能得到沒有新的選擇查詢剛插入的行的ID?如果我使用$ wpdb-> insert()我在$ wpdb-> insert_id中有這個id,但是如果我使用$ wpdb-> query(),這個字段是空的...

回答

5

使用$ wpdb-> insert )和$ wpdb-> update(),你隱式地使用$ wpdb-> prepare()函數及其保護。

例如WordPress的$ wpdb-> update()函數在最後兩行:

$sql = "UPDATE `$table` SET " . implode(', ', $bits) . ' WHERE ' . implode(' AND ', $wheres); 
return $this->query($this->prepare($sql, array_merge(array_values($data), array_values($where)))); 

因此,要插入的ID和保護,我建議你使用$ wpdb->插入()。