我的网站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中的更多信息