如何方便的转义所有从 mysql 中提取出来的字符串?

2016-10-09 05:50:29 +08:00
 starvedcat

我初学 PHP ,这是一个课程作业,所以我的要求并不是特别严谨 我发现我的数据库中,有一些字符串中包含了一些特殊符号,比如“&”。我查找资料,发现 htmlspecialchars 这个函数可以用来转义。但是,难道要手动一个一个把这个函数应用到每个字符串上吗?我现在 project 做了一大半了,字符串变量少说也有几十个。。。。所以我想问一下,有没有方便一些的方法?

2296 次点击
所在节点    PHP
9 条回复
lslqtz
2016-10-09 07:21:19 +08:00
在使用字符串时包裹一个 mysql_real_escape_string();,如果是在函数里会轻松许多,直接函数加进去就好,如果不是就需要每个 mysql_query($str);中加成 mysql_query(mysql_real_escape_string($str));
这个函数是用于 MySQL 语句执行前的转义,可传两个参数:
mysql_real_escape_string(string,connection);
string 字符串。
connection MySQL 连接。如果未指定,将使用上一个连接。
注意一点是, mysql_real_escape_string() 有些人说用了这个函数并不绝对保险,仅供参考。
lslqtz
2016-10-09 07:25:22 +08:00
但是随后我发现,&这个字符对于 MySQL 似乎不是特殊字符,因此没有转义。
我选择再加个:
str_replace('&','',$str);
lslqtz
2016-10-09 07:26:08 +08:00
结果我发现是提取出来的,那就直接用 str_replace 吧。。
oott123
2016-10-09 09:08:48 +08:00
array_map
jhdxr
2016-10-09 18:59:38 +08:00
@lslqtz mysql_escape_string / mysql_real_escape_string 是属于 ext-mysql 的,这个在 5.5 里就已经废弃,并且从 7.0 开始被移除了。对于数据库连接,推荐使用 PDO 。

然后 LZ 你并没有解释 & 为什么是特殊符号(你对特殊符号是怎么定义的)?

最后,$GLOBALS 可以用来遍历所有变量,然而除非万不得已,不要这么做
lslqtz
2016-10-09 21:59:16 +08:00
@jhdxr 写了...
mysqli 应该也行,我随便找的。
不喜欢对象化
lslqtz
2016-10-09 21:59:41 +08:00
写 > 谢
妈蛋我的铜币
starvedcat
2016-10-10 02:57:48 +08:00
@jhdxr 我用 firefox 的 html validator 插件,提示说“&”要用“&ampl ”代替,然后就搜索到了那个函数
lslqtz
2016-10-10 07:54:37 +08:00
@starvedcat 这是页面检查,输出的话我一般是直接输出的,因为没什么影响

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/311279

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX