繁体   English   中英

MySQL中的特殊字符

[英]special characters in MySQL

我正在搜索我正在从事的项目。 当有人搜索术语时,它将被保存在MySQL数据库中。 我使用mysql_real_escape_string来转义特殊字符,但仍将特殊字符保存在数据库中作为示例

不要成为不要

然后我尝试了htmlspecialchars还是一样。 我什至将数据库更改为utf8_general_ci我也尝试了所有所有操作。

这是代码

$addSearch = htmlspecialchars($search);
$addSearch1 = mysql_real_escape_string($addSearch);
mysql_query("INSERT INTO search (term) VALUES('$addSearch1') ") 
or die(mysql_error());  

谁能告诉我解决方案。 提前致谢。

使用此正则表达式从字符串中删除特殊字符

$addSearch = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $search);
mysql_query("INSERT INTO search (term) VALUES('$addSearch') ") or die(mysql_error()); 

并使用mysqlipdo代替mysql因为它已被弃用,以后可以删除。

我建议检查您的PHP配置(php.ini),以查看是否启用了“魔术引号”。 如果是这样,请关闭它们并重新启动您的Web服务。 更多信息在这里

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off

如果您无法编辑php.ini则可以在.htaccess文件中使用此文件:

php_flag magic_quotes_gpc Off

像这样尝试...

$height='aA1`';
$value=preg_replace("/[^\`a-z,. \'\-\d]/i", "", $height);
$value=mysql_real_escape_string($value);
mysql_query("INSERT INTO `table` SET `column`='$value'") or die(mysql_error());

实际上,有很多方法可以做到这一点。 也许您看不到某些错误。

$str = addslashes($str);
$str = addcslashes($str, "'\"");
$str = str_replace(array("'", '"'), array("\\'", '\\"'), $str);
$str = preg_replace("~([\"'])~", "\\\\1", $str);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM