我创建了一个简单的插件。它在后端有一个配置站点,用户站点有一些功能。我需要将一些用户选择保存到数据库中。在开始时我使用了$ 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()这个字段是空的......
答案 0 :(得分: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-> insert()。