【问题标题】:Wordpress - insert as prepared query vs $wpdb->insert_idWordpress - 插入准备好的查询与 $wpdb->insert_id
【发布时间】:2011-10-28 01:29:25
【问题描述】:

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

【问题讨论】:

    标签: wordpress insert prepared-statement


    【解决方案1】:

    使用 $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()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 2020-10-27
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      相关资源
      最近更新 更多