php - 我什么时候应该使用 $wpdb->prepare(如果有的话)?

标签 php mysql wordpress

我很难弄清楚是否应该在 WordPress 中的数据库查询上使用 $wpdb->prepare 以防止 SQL 注入(inject)等情况。

$wpdb Codex显示了一些使用 $wpdb->prepare 函数的示例,以及其他未使用它的示例。

另外,在 this answer在 StackOverflow 上,有人提到 $wpdb->insert 等函数与使用 $wpdb->prepare 具有相同的安全级别。但是其他 $wpdb 函数(例如 $wpdb->get_var$wpdb->query)呢?

如果需要的话,我什么时候应该使用$wpdb->prepare

我的一些(简化的)$wpdb 类和函数用法如下所示:

<小时/>

示例 1: $wpdb->插入

$wpdb->insert(
                'special_posts', 
                    array( 
                        'title' => $title,
                        'selftext_html' => $selftext_html,
                        'selftext' => $selftext,
                    ), 

                    array(
                        '%s',
                        '%s',
                        '%s',
                    )
            );
<小时/>

示例 2: $wpdb->get_results

$wpdb->get_results("SELECT * FROM special_posts WHERE selftext_html = '$value'");
<小时/>

示例 3: $wpdb->get_var

$wpdb->get_var("SELECT title FROM special_posts ORDER BY id DESC LIMIT 1");
<小时/>

示例 4: $wpdb->query

$wpdb->query('TRUNCATE TABLE special_posts');

最佳答案

据我了解 - 这些方法具有查询参数的占位符($wpdb->insert()$wpdb->update()$ wpdb->delete()) 不需要 $wpdb->prepare() 方法,而且它们已经是安全的。

但是其他的 - 那些没有占位符,需要额外的 sql 转义。

关于php - 我什么时候应该使用 $wpdb->prepare(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37558506/

相关文章:

php - 根据文本大小调整图像大小

php - 注意 : Undefined variable: today and tomorrow(Variable's) in . 。在第 6 行

javascript - 两个不同的 Bootstrap 菜单在同一个按钮上折叠

php - 插入mysql时 undefined variable

jquery - 如何删除导航和主要内容之间多余的空白?

php - 交响乐2 : Translate to default locale

mysql - 如何通过在 sql 上连接 3 个表来插入行数?

mysql - 帮助 MySQL 中的嵌套查询

java - 列表连接到数据库不显示数据JSP