我的网站http://www.locuciones-baratas.com/
用户可以输入许多文本区域。但是当用户输入带有特殊字符的文本时

1.000 millones de pesetas”
|#〜@¬#〜€¬€〜¬'''¡!!“ !!
“您要从1.000 millones de pesetas处购得产品”,哈·阿塞古拉多·科雷亚(ha asegurado Correa),通讯员

然后记录将不会插入到mysql数据库中

我试过了
ut8通用ci作为字符集。

在HTML中设置meta utf8

$textarea = mb_convert_encoding($_POST['textarea'], 'ISO-8859-1','utf-8');
$insert_array = array('textarea'=>$textarea);
$sql = build_sql_insert('order',$insert_array);
mysqli_query($conn,$sql) ;

function build_sql_insert($table, $data) {

$key = array_keys($data);
$val = array_values($data);
$sql = "INSERT INTO `$table` (" . implode(', ', $key) . ") " . "VALUES ('" . implode("', '", $val) . "')";
return($sql);
    }


我认为问题可能是php不允许特殊字符继续进行,数据可能无法到达mysql。

请建议如何插入带有此类文本的记录

最佳答案

也许您需要转义字符串。

尝试添加mysqli_real_escape_string。

function build_sql_insert($table, $data, $conn) {

    $key = array_keys($data);
    $val = array_values($data);

    //Mysql real escape string use a string value. this hack will work only
    //for a single value passed. please read the comment below.
    $val[0] = mysqli_real_escape_string($conn, $val[0]);

    $sql = "INSERT INTO `$table` (" . implode(', ', $key) . ") " . "VALUES ('" .     implode("', '", $val) . "')";
    return($sql);
}


PHP手册here中的更多信息

08-17 09:26
查看更多