Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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/9/delphi/8.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 Mysql将引号存储为&39;_Php_Sql_Mysql_Character Encoding_Collation - Fatal编程技术网

Php Mysql将引号存储为&39;

Php Mysql将引号存储为&39;,php,sql,mysql,character-encoding,collation,Php,Sql,Mysql,Character Encoding,Collation,我有一些PHP代码,它存储数据库中文本框中键入的任何内容。如果我输入bob's apples,它将作为bob&39;存储在数据库中;这是苹果 有什么问题吗 存储该字符的表具有latin1_swedish_ci的排序规则。看起来您的PHP代码正在使用将特殊字符转换为HTML实体。您可以使用该函数返回原始字符串 $a = "bob's apples"; echo htmlentities($a,ENT_QUOTES); // bob&am

我有一些PHP代码,它存储数据库中文本框中键入的任何内容。如果我输入bob's apples,它将作为bob&39;存储在数据库中;这是苹果

有什么问题吗

存储该字符的表具有latin1_swedish_ci的排序规则。

看起来您的PHP代码正在使用将特殊字符转换为HTML实体。您可以使用该函数返回原始字符串

$a = "bob's apples";
echo htmlentities($a,ENT_QUOTES);                                // bob's apples
echo html_entity_decode(htmlentities($a,ENT_QUOTES),ENT_QUOTES); //bob's apples

函数htmlspecialchars(带有第二个参数的ENT_引号)还将单个引号转换为&039


在将HTML转义字符串插入数据库之前,使用htmlspecialchars或htmlentities进行转义,这是一个坏主意。您可以使用html_实体_解码来修复损坏,但最好先不要这样做

应该转义HTML的时间正好在输出到浏览器之前,通常是从SELECT查询中获取的行:

用谷歌搜索XSS

并不是说HTML转义与添加斜杠没有什么关系,在使用mysql\u real\u escape\u string将字符串插入数据库之前,应该添加斜杠。这是为了避免SQL注入漏洞

<?php $row =  mysql_fetch_row($result);
echo htmlspecialchars($row['someField']); // good place to escape HTML.

<?php $str = htmlspecialchars($_GET['foo']); // bad place to escape HTML.
$str = mysql_real_escape_string($str); // good place to escape for DB.
$q = 'INSERT INTO .... VALUES (' . $str . ')';
mysql_query($q);

实际上,没有使用该函数或其他类似函数,但解码函数很有用。您确定这与mysql排序规则无关吗?非常确定。打印insert语句并亲自查看。我们必须查看一些代码,但很明显,在输入阶段有HTML转义,正如Ollie解释的那样,这完全是假的。不幸的是,这是PHP作者的一个常见错误。你使用的是某种框架吗?可能是因为一个巨魔看到了你的昵称。
<?php $row =  mysql_fetch_row($result);
echo htmlspecialchars($row['someField']); // good place to escape HTML.

<?php $str = htmlspecialchars($_GET['foo']); // bad place to escape HTML.
$str = mysql_real_escape_string($str); // good place to escape for DB.
$q = 'INSERT INTO .... VALUES (' . $str . ')';
mysql_query($q);