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



我正在使用Wordpress和MySQL。 我有一个简单的表单来允许用户输入文本字符串。在这种情况下,我要求供应商的名称。因此,假设用户输入"Arby's"。 Arby's 包含一个撇号。用户提交表单后,我使用 $wpdb->insert 将其插入到数据库中的自定义表中。我得到的结果是:

身份证meta_key meta_value 13 供应商 阿比的

我不知道如何摆脱"\"。用户未输入"\"。当然,我不希望它在数据库值中。我只想要用户输入它时它 - "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's
With Addslashes: Arby\'s
With esc_attr: Arby's
With sanitize_test_field: Arby's
With esc_html_e:

我也尝试过其他事情,但没有什么能给我想要的结果。这似乎是一件基本的事情;接受来自表单的输入并按原样存储在数据库中。但是我不知道为什么它不起作用。如果您有解决方案,我很想听听。但是,除了这个特定问题的答案之外,如果有资源可以理解这个问题并学习如何处理它,那就太好了。我没有上过教室,只是自学成才,所以不明白这个话题。 谢谢。

好吧,我从来没有得到过这方面的帮助,但我终于遇到了如何解决我的问题。所以发生的事情是,表单的发布在撇号之前添加了斜杠((。我以为是$wpdb>插入是问题所在,但事实并非如此。

我如何解决我的问题是使用以下代码。首先,我找到了删除表单帖子放入的斜杠的条形斜杠函数。然后,我也不得不使用 __((。不太确定为什么,但它奏效了。

$translated = __( stripslashes( $_POST['vendor'] ) );
$result = $wpdb->insert( 'raw_meta',
array(
'meta_key' => 'test_data',
'meta_value' => $translated,
)
);

最新更新