为了账号安全,请及时绑定邮箱和手机立即绑定

使用 $wpdb->insert 将包含撇号的用户输入文本保存到数据库表中

使用 $wpdb->insert 将包含撇号的用户输入文本保存到数据库表中

PHP
互换的青春 2023-04-02 10:19:51
我正在使用 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,

        )

    );


查看完整回答
反对 回复 2023-04-02
  • 1 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信