如何打印用单引号保存的从 SQL 检索到的 PHP 数据
Posted
技术标签:
【中文标题】如何打印用单引号保存的从 SQL 检索到的 PHP 数据【英文标题】:How to print in PHP data retrieved from SQL that has been saved with single quote 【发布时间】:2015-11-27 17:20:15 【问题描述】:我在 SQL 中有一些使用过的保存数据,其名称中有单引号(例如,Marco D'Alba。通过 php,我在我的网站上打印这些名称,但 SQL 会像这样保存该名称:
马可·德安杰洛。
当我打印这些名字时,
Marco D\'Angelo
被打印出来。
有什么简单的修复方法吗?
【问题讨论】:
使用mysql_real_escape_string()
或 mysqli_real_escape_string()
函数。
使用准备好的语句/参数化查询。就这些。 :P
请详细说明but SQL will save that name like this
。
SQL 不会像那样保存名称,您在某处有一些错误的代码会多次转义引号。第一步是修复插入以使用准备好的语句,这样您就不必手动转义字符串。
【参考方案1】:
请这样打印:
$text = "Marco D'Alba";
echo mysql_real_escape_string($text);
mysql_real_escape_string() 函数自 PHP 5.5.0 起已弃用
$text = "Marco D'Alba";
echo mysqli_real_escape_string($text);
如果启用了magic_quotes_runtime,大多数从任何类型的外部源(包括数据库和文本文件)返回数据的函数都将使用反斜杠转义引号。如果magic_quotes_sybase 也打开,则使用单引号而不是反斜杠对单引号进行转义。
您必须在 php.ini 中检查并设置“magic_quotes_runtime”和“magic_quotes_sybase”
【讨论】:
当用户插入他的名字时,我已经在使用 mysql_real_escape_string。 $value2 = mysql_real_escape_string($_POST['Surname']);数据库仍将其保存为 Mauro D'\Alba!所以当我去打印它时(即使我打印时使用mysqlrealescapestring,它仍然会打印单引号! 我已经修改了我的答案。请检查 php.ini 中的“magic_quotes_runtime”和“magic_quotes_sybase”【参考方案2】:如果您想打印并摆脱单引号,请尝试使用
echo stripslashes("Marco D\'Angelo");
【讨论】:
以上是关于如何打印用单引号保存的从 SQL 检索到的 PHP 数据的主要内容,如果未能解决你的问题,请参考以下文章