我正在尝试正确写入MySQL数据库,但是它给了我HTML实体而不是我想要的字符。
我的页眉包含...
<meta charset="utf-8">
这是我正在使用的代码......
$team_name = "Ranieri's Ghost";
$team_name_converted = html_entity_decode($team_name, ENT_COMPAT, "UTF-8");
mysqli_query($con,"INSERT INTO mydbname (team_name) VALUES ('$team_name_converted') ");
echo $team_name_converted;
Ranieri's Ghost
Ranieri's Ghost
我知道这很容易受到SQL注入的影响,但我会在修复后对其进行排序。
SQL Table行是一个VARCHAR(40),我尝试过排序规则“utf8_roman_ci”,“latin1_swedish_ci”,“utf8_swedish_ci”,“utf8_general_ci”以及其他几个,但它似乎没有太大变化。
我知道如何在没有特殊字符的情况下将Ranieri's Ghost
写入我的MySQL数据库吗?
答案 0 :(得分:3)
您的查询失败,因为您没有逃避撇号。您可以通过使用预准备语句轻松完成此操作(无论如何您应该使用mysqli)。与此同时,$team_name_converted = mysqli_real_escape_string($con, $team_name_converted)
将会这样做。
编辑:ENT_COMPAT
转换双引号但不引用单引号。使用ENT_QUOTES
。
答案 1 :(得分:1)
请改为:
$team_name = "Ranieri's Ghost";
$team_name_converted = html_entity_decode($team_name, ENT_COMPAT, "UTF-8");
$val = mysqli_real_escape_string($con, $team_name_converted);
mysqli_query($con,"INSERT INTO mydbname (team_name) VALUES ('$team_name_converted') ");
echo $team_name_converted;