php - $wpdb->update 或 $wpdb->insert 导致在引号前添加斜杠

标签 php mysql wordpress

这个问题已经在各个地方提出了几次,但我还没有找到一个明确而明确的答案。大多数解决方案都涉及人们说要禁用 php.ini 文件上的魔术引号(我这样做了)或修改核心 WP 文件。

无论如何,问题是这样的:为什么每次我使用 $wpdb->insert 或 $wpdb->update 时都会在任何单引号之前添加一个斜杠。比如:

I've eaten strawberries becomes I\'ve eaten strawberries

这是我使用的示例代码:

$id = $_POST['id'];
$title = $_POST['title'];
$message = $_POST['message'];

$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id))

同样的问题在这里:Wordpress Database Output - Remove SQL Injection Escapes但除了“禁用魔术引号”之外从未解决过

最佳答案

折腾了一整天,答案如下:

Wordpress 在 $_POST 声明处转义,而不是在实际插入处转义,这很奇怪。

$id = stripslashes_deep($_POST['id']); //added stripslashes_deep which removes WP escaping.
$title = stripslashes_deep($_POST['title']);
$message = stripslashes_deep($_POST['message']);

$wpdb->update('table_name', array('id'=>$id, 'title'=>$title, 'message'=>$message), array('id'=>$id));

这样做意味着 WP 不会在任何引号前添加斜杠。

关于php - $wpdb->update 或 $wpdb->insert 导致在引号前添加斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7341942/

相关文章:

php - 动态多维数组

php - 单击链接时如何将数据发送到 PHP 页面?

php - 为什么我不能在 PHP 的 DateTime 类中访问 DateTime->date?

php - WordPress PHP Cron 作业

php - 自动加载器导致找不到类

wordpress - 在新标签页中打开 WooCommerce 外部产品

php - 预检响应具有无效的 HTTP 状态代码

mysql - SQL 的 Replace() 如何匹配?

php - 如何使用 PHP、PDO、MySQL 检查列是否不存在?

mysql - 从另一个选择插入另一个表不起作用