数据库中有多个斜杠

时间:2018-02-05 15:44:28

标签: php mysql wordpress forms

我有一个基于wordpress的网站,其中包含一个html表单,可以通过json将数据保存在mysql数据库中。我是这样做的:

<?php
global $wpdb;
$db = $wpdb->prefix . 'db_table';
$json_query = $wpdb->get_row(
    "
    SELECT app, ts
    FROM $db
    WHERE user_id = $user_id
    ",
    ARRAY_A
);
$json = json_decode($json_query[app], true);
?>

<label>Family Name</label>
<input type="text" name="json[family_name]" <?php echo ($json_ok[family_name] ? 'value="' . $json_ok[family_name] . '"' : ''); ?> />

<?php
$json_send = json_encode( $_POST['json'] );

if (isset($_POST['save'])) {
    $wpdb->update(
        $db,
        array(
            'app'   =>  $json_send
        ),
        array( 'user_id' => $user_id )
    );
?>

它可以工作,但如果用户插入撇号字符,则sistem save撇号前面会加一个反斜杠。每次用户保存时,系统都会添加反斜杠。现在我的数据库中充满了反斜杠:

{"family_name":"Rossi","indirizzo":"strada d\\\\\\\\\\\\\\\\\\\'oro","first_name":"Maurizio","country_birth":"Italy","city_birth":"Roma"}

我该如何解决这个问题? 感谢

1 个答案:

答案 0 :(得分:1)

在wordpress中保存和使用json编码时,我自己处理了同样的问题。这就是为我解决的问题。

在输入中显示值时,只需调用stripslashes();

像这样:

<input type="text" name="json[family_name]" <?php echo (stripslashes($json_ok[family_name]) ? 'value="' . stripslashes($json_ok[family_name]) . '"' : ''); ?> />

当它再次被保存时,它将停止添加那些额外的斜杠。正如John Bell在评论中提到的那样,当你调用update函数时,它调用了addslashes()。