以下是wpdb类的警告。
https://codex.wordpress.org/Class_Reference/wpdb
警告
此类中的某些函数将SQL语句作为输入。您必须对SQL查询中包含的所有不受信任的值进行SQL转义,以防止SQL注入攻击。检查文档,查看您计划使用的函数是否为您的SQL转义,或者是否希望它预先转义。
So I read this as - the wpdb class does not automatically prepare or escape the data for you.
我很确定,如果您不能完全信任代码中的数据源,那么我建议使用prepare类(?)。
如果没有正确使用prepare类,不要认为使用prepare类可以修复它。我是一个相当新的,所以请张贴任何更正作为答复,如果我不正确。
$wpdb->准备(“从ID=%d且名称=%s的表中选择*”,$ID,$name);
在上面的语句中,有两个额外的属性。一个表示ID,一个表示名称。据我所知,每个都与查询中的项数顺序对应。还有%s=字符串,%d=整数,%f=浮点。
另外,根据我的阅读,如果你没有加入额外的属性,那么prepare实际上什么都不会做。会有一个警告,但如果你关掉它,也许你不会知道。
下面是一个来自类引用本身的示例,其中他们在下面的插入中添加了一个prepare类。
https://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks
$wpdb->查询($wpdb->准备(“插入到$wpdb->postmeta(post\\u id,meta\\u key,meta\\u value)值(%d,%s,%s)”,数组(10,$metakey,$metavalue));
我担心的是,根据“没人”引用的同一页,上浮的答案是不正确的。我假设您使用prepare()而不是其他标准的php转义方法,因为我认为这个答案也是正确的。。。直到我挖得更深。
无论如何也许自最初的答案以来,情况已经发生了变化。