Php 将HTML实体放入MySQL数据库时解码它们
我试图正确地写入MySQL数据库,但它给了我HTML实体,而不是我想要的字符 我的页眉包含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
<meta charset="utf-8">
- 屏幕上回响:
Ranieri的鬼魂
- MySQL数据库中的条目:
Ranieri';s Ghost
你知道如何让它在没有特殊字符的情况下将
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'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'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哦,对了;出于某种原因,我认为情况正好相反