我试图正确地写入MySQL数据库,但是它给了我HTML实体,而不是我想要的字符。

我的页面标题包含...

<meta charset="utf-8">

这是我正在使用的代码...

$team_name = "Ranieri&#39;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&#39;s Ghost

我知道这很容易受到SQL注入的影响,但是一旦修复,我将对其进行排序。

SQL表行是一个VARCHAR(40),我尝试了以下排序规则:“ utf8_roman_ci”,“ latin1_swedish_ci”,“ utf8_swedish_ci”,“ utf8_general_ci”和其他一些排序规则,但似乎变化不大。

知道如何在没有特殊字符的情况下将Ranieri's Ghost写入MySQL数据库吗?

===============>>#1 票数:3 已采纳

您的查询失败,因为您没有转义撇号。 您可以通过使用准备好的语句轻松地做到这一点(就像您应该使用mysqli一样)。 同时, $team_name_converted = mysqli_real_escape_string($con, $team_name_converted)$team_name_converted = mysqli_real_escape_string($con, $team_name_converted)

编辑: ENT_COMPAT转换双引号而不是单引号。 使用ENT_QUOTES

===============>>#2 票数:1

改为这样做:

$team_name = "Ranieri&#39;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;

  ask by Cully translate from so

未解决问题?本站智能推荐: