Wordpress - 插入准备好的查询vs $ wpdb-> insert_id

Kan*_*nia 2 wordpress insert prepared-statement

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

let*_*cia 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 ) ) ) );
Run Code Online (Sandbox Code Playgroud)

因此,为了获取插入的ID并受到保护,我建议您使用$ wpdb-> insert().