$ wpdb->查询Wordpress短代码导致语法错误

时间:2017-07-21 23:29:44

标签: mysql wordpress

我试图更新多个wordpress多站点页面。 我有一个发布到php文件的ajax脚本,在文本格式化后,它会更新相应的表格单元格。

但是,我一直收到" WordPress数据库错误您的SQL语法出错了;"错误。

$content = "[shortcode] text processed by shortcode [/shortcode]";
$table = "wp_".$_POST["blogid"]."_posts";
$wpdb->query(" UPDATE {$table} SET post_content={$content} WHERE posts_title='test'");

这是在我希望用来更新单元格的字符串中使用方括号(短代码)的问题吗?

语法对我来说似乎很好,但我的SQL知识并不强大。 更详细的说,我有一个获取所有多站点的mysql查询,然后在用JS编辑之后循环遍历它们,然后发布到这个php文件。

1 个答案:

答案 0 :(得分:1)

避免直接使用字符串模板进行查询构建。您也可以轻松地包含无效语法,并且由于您直接从短代码中读取内容,因此您需要打开整个数据库直至SQL注入攻击。这可以让攻击者直接访问您的数据库,这意味着任何可以发布内容的人也可以获得对WordPress的完全访问权限。

始终先准备好您的查询。如果您正在使用$wpdb,则会在此处说明用法:https://developer.wordpress.org/reference/classes/wpdb/prepare/

这也将确保您查询的短代码内容格式正确。