我试图正确地写入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
MySQL数据库条目:
Ranieri's Ghost
我知道这很容易受到SQL注入的影响,但我将在修复后对其进行排序。
SQL表行是一个VARCHAR(40),我尝试过排序“utf8戋roman戋ci”、“latin1戋swedish戋ci”、“utf8戋swedish戋ci”、“utf8戋general戋ci”和其他一些,但似乎没有太大变化。
你知道如何让它在没有特殊字符的情况下写入MySQL数据库吗?
最佳答案
你的查询失败了,因为你没有逃过撇号。您可以通过使用准备好的语句轻松做到这一点(无论如何,您应该使用mysqli)。同时,$team_name_converted = mysqli_real_escape_string($con, $team_name_converted)
也行。
编辑:ENT_COMPAT
转换双引号,但不转换单引号。使用ENT_QUOTES
。