Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将HTML实体放入MySQL数据库时解码它们_Php_Mysql_Encoding - Fatal编程技术网

Php 将HTML实体放入MySQL数据库时解码它们

Php 将HTML实体放入MySQL数据库时解码它们,php,mysql,encoding,Php,Mysql,Encoding,我试图正确地写入MySQL数据库,但它给了我HTML实体,而不是我想要的字符 我的页眉包含 <meta charset="utf-8"> 屏幕上回响:Ranieri的鬼魂 MySQL数据库中的条目:Ranieri';s Ghost 我知道这很容易受到SQL注入的影响,但一旦修复,我将对其进行排序 SQL表行是一个VARCHAR(40),我尝试了排序规则“utf8_roman_ci”、“latin1_swedish_ci”、“utf8_swedish_ci”、“utf8_g

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

我的页眉包含

<meta charset="utf-8">
  • 屏幕上回响:
    Ranieri的鬼魂
  • MySQL数据库中的条目:
    Ranieri';s Ghost
我知道这很容易受到SQL注入的影响,但一旦修复,我将对其进行排序

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


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

你的查询失败了,因为你没有逃脱撇号。您可以通过使用准备好的语句轻松地完成这项工作(无论如何,您都应该使用mysqli)。同时,
$team\u name\u converted=mysqli\u real\u escape\u string($con,$team\u name\u converted)
也可以


编辑:
ENT\u COMPAT
转换双引号,但不转换单引号。使用
ENT\u QUOTES

您的查询失败,因为您没有跳过撇号。您可以通过使用准备好的语句轻松地完成这项工作(无论如何,您都应该使用mysqli)。同时,
$team\u name\u converted=mysqli\u real\u escape\u string($con,$team\u name\u converted)
也可以

编辑:
ENT\u COMPAT
转换双引号,但不转换单引号。使用
ENT\u引号

执行以下操作:

$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;
改为这样做:

$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;

+1这表明“SQL注入预防”不是事后才想到的,它是一种基本的必要性。谢谢-这是有效的,但我还必须将上面的
ENT\u COMPAT
更改为
ENT\u QUOTES
。愚蠢的我并没有意识到ENT_COMPAT实际上忽略了单引号。@Cully哦,对了;出于某种原因,我认为这是+1的另一种方式,这表明“SQL注入预防”不是事后才想到的,它是一种基本的需要。谢谢-这是有效的,但我还必须将上面的
ENT\u COMPAT
更改为
ENT\u QUOTES
。愚蠢的我并没有意识到ENT_COMPAT实际上忽略了单引号。@Cully哦,对了;出于某种原因,我认为情况正好相反