文本部分保存在mysql数据库中

时间:2017-06-25 22:04:45

标签: php mysql utf-8 utf8mb4

我有一个奇怪的问题(至少对我而言)。我有一个带有textarea的表单(使用ckeditor但还尝试过其他人......)当我提交文本时,它会部分保存在我的数据库中。

数据库是utf8mb4_unicode_ci,我存储数据的列是带有uf8mb4校对的文本数据类型。

使用phpmyadmin如果我在列中放入纯文本(没有内部html),它会毫无问题地存储。如果我使用表单放置文本,它只存储文本的一部分。似乎不允许html标签..

该页面包含:

meta charset='UTF-8'

当我连接到数据库时,我使用此字符串:

if(!mysqli_set_charset($con, "utf8mb4")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($con));
    exit();
}

这是我用来在数据库中存储数据的代码:

<?php
include('connect.php');

$id = preg_replace("/[^0-9]/",'',$_POST['id']);                         // ID AUTOVETTURA

$testo = $_POST['testo'];                                               // PRENDO TESTO

$tabella = $_POST['tabella'];                                           // LEGGO TABELLA DOVE: 1 = CHI SIAMO; 2 = DISCLAIMER; 3 = PRIVACY; 4 = COOKIE; 5 = CONDIZIONIVENDITA;

$stmt = mysqli_stmt_init($con);                                         // INIZIALIZZO LA CONNESSIONE


if($tabella == 1){
    mysqli_stmt_prepare($stmt,'UPDATE chisiamo
                                SET chisiamo.testo = ?
                                WHERE chisiamo.id = ?')
                                or die(mysqli_error($con));             // QUERY RECUPERO DATI

    mysqli_stmt_bind_param($stmt,'si',$testo,$id);                      // PREPARO I PARAMETRI

    mysqli_stmt_execute($stmt);                                         // ESEGUO LA QUERY
}

if($tabella == 2){
    mysqli_stmt_prepare($stmt,'UPDATE disclaimer
                                SET disclaimer.testo = ?
                                WHERE disclaimer.id = ?')
                                or die(mysqli_error($con));             // QUERY RECUPERO DATI

    mysqli_stmt_bind_param($stmt,'si',$testo,$id);                      // PREPARO I PARAMETRI

    mysqli_stmt_execute($stmt);                                         // ESEGUO LA QUERY
}

if($tabella == 3){
    mysqli_stmt_prepare($stmt,'UPDATE privacy
                                SET privacy.testo = ?
                                WHERE privacy.id = ?')
                                or die(mysqli_error($con));             // QUERY RECUPERO DATI

    mysqli_stmt_bind_param($stmt,'si',$testo,$id);                      // PREPARO I PARAMETRI

    mysqli_stmt_execute($stmt);                                         // ESEGUO LA QUERY
}

if($tabella == 4){
    mysqli_stmt_prepare($stmt,'UPDATE cookie
                                SET cookie.testo = ?
                                WHERE cookie.id = ?')
                                or die(mysqli_error($con));             // QUERY RECUPERO DATI

    mysqli_stmt_bind_param($stmt,'si',$testo,$id);                      // PREPARO I PARAMETRI

    mysqli_stmt_execute($stmt);                                         // ESEGUO LA QUERY
}

if($tabella == 5){
    mysqli_stmt_prepare($stmt,'UPDATE condizionivendita
                                SET condizionivendita.testo = ?
                                WHERE condizionivendita.id = ?')
                                or die(mysqli_error($con));             // QUERY RECUPERO DATI

    mysqli_stmt_bind_param($stmt,'si',$testo,$id);                      // PREPARO I PARAMETRI

    mysqli_stmt_execute($stmt);                                         // ESEGUO LA QUERY
}

mysqli_stmt_execute($stmt);                                             // ESEGUO LA QUERY

mysqli_stmt_close($stmt);                                               // CHIUDO LO STATEMENT
mysqli_close($con);                                                     // CHIUDO CONNESSIONE   

?>

这是连接代码:

$con = mysqli_connect($host,$user,$password,$db);

if (!$con) {
    die('Connection Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}


if(!mysqli_set_charset($con, "utf8mb4")) {
    printf("Error loading character set utf8: %s\n", mysqli_error($con));
    exit();
}

我还尝试在查询之前对文本使用addslashes函数,但它没有解决我的问题..

请提示吗?

编辑:

这是我用来调用php脚本将数据记录到数据库中的函数:

$(document).ready(function(){
  $('form').on('submit', function (e) {
    var id = 1;
    var testo = CKEDITOR.instances.editor1.getData()

    alert(testo);
    var tabella = $('#tabella').val();
    var data_1 = 'testo=' + testo + '&id=' + id + '&tabella=' + tabella;    
    e.preventDefault();
    $.ajax({
      type: "POST",
      contentType: "application/x-www-form-urlencoded;charset=UTF-8",
      data: data_1,
      url: "php/aggiorna_pagine.php"
    })
    .done(function(){
      $('.success').show();
      $('.success').fadeOut(2000);
    });
  });
});

0 个答案:

没有答案