我正在使用 Wordpress 和 MySQL。我有一个简单的表单,允许用户输入文本字符串。在这种情况下,我要求提供供应商的名称。因此,假设用户输入“Arby's”。Arby's 包含一个撇号。在用户提交表单后,我使用 $wpdb->insert 将其插入到数据库中的自定义表中。我得到的结果是:ID meta_key meta_value 13 vendor Arby's我不知道如何摆脱“\”。用户没有输入“\”。当然,我不希望它出现在数据库值中。我只是想要它作为用户输入它 - “Arby's”。我花了很多时间研究这个,并尝试了很多我发现的东西,但没有任何效果。这是我的代码的精简版本,用于演示我的问题和我尝试过的内容。...global $wpdb;if ($_SERVER['REQUEST_METHOD'] == 'POST') { $vendor = $_POST['vendor']; $vendor1 = addslashes($_POST['vendor']); $vendor2 = esc_attr($_POST['vendor']); $vendor3 = sanitize_text_field($_POST['vendor']); $vendor4 = esc_html_e($_POST['vendor']); echo '<br><br>Post Value: ' . $_POST['vendor'] . '<br>'; echo 'With Addslashes: ' . $vendor1 . '<br>'; echo 'With esc_attr: ' . $vendor2 . '<br>'; echo 'With sanitize_test_field: ' . $vendor3 . '<br>'; echo 'With esc_html_e: ' . $vendor4 . '<br>'; $result = $wpdb->insert( 'raw_meta', array( 'meta_key' => 'vendor', 'meta_value' => $vendor, ) );} else { echo '<form method="post" >'; echo 'Vendor Name:<br>'; echo '<input style="font-size:18px;" type="text" name="vendor" autofocus required><br><br>'; echo '<input type="submit" value="Save New Vendor" name="submit">'; echo '</form>';}...代码回显如下:Post Value: Arby\'sWith Addslashes: Arby\\\'sWith esc_attr: Arby\'sWith sanitize_test_field: Arby\'sWith esc_html_e:我也尝试过其他东西,但没有任何东西能给我想要的结果。这似乎是一件很基本的事情;接受来自表单的输入并将输入的内容存储在数据库中。但我不明白为什么它不起作用。如果您有解决方案,我很乐意听到。但是,除了这个特定问题的答案之外,如果有资源可以理解这个问题并学习如何处理它,那就太好了。我没有上过教室,只是自学,所以不明白这个话题。谢谢。
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
好吧,我从来没有得到这方面的帮助,但我终于偶然发现了如何解决我的问题。所以发生的事情是表单的发布在撇号前添加了一个斜杠 ()。我以为问题出在 $wpdb->insert 上,但事实并非如此。
我如何解决我的问题是使用下面的代码。首先,我找到了 stripslashes 函数,它删除了表单帖子中的斜杠。然后,我还必须使用 __() 。不太确定为什么但它有效。
$translated = __( stripslashes( $_POST['vendor'] ) );
$result = $wpdb->insert( 'raw_meta',
array(
'meta_key' => 'test_data',
'meta_value' => $translated,
)
);
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消