V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
starvedcat
V2EX  ›  PHP

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

  •  
  •   starvedcat · 2016-10-09 05:50:29 +08:00 · 2351 次点击
    这是一个创建于 2972 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    9 条回复    2016-10-10 07:54:37 +08:00
    lslqtz
        1
    lslqtz  
       2016-10-09 07:21:19 +08:00   ❤️ 1
    在使用字符串时包裹一个 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
        2
    lslqtz  
       2016-10-09 07:25:22 +08:00   ❤️ 1
    但是随后我发现,&这个字符对于 MySQL 似乎不是特殊字符,因此没有转义。
    我选择再加个:
    str_replace('&','',$str);
    lslqtz
        3
    lslqtz  
       2016-10-09 07:26:08 +08:00   ❤️ 1
    结果我发现是提取出来的,那就直接用 str_replace 吧。。
    oott123
        4
    oott123  
       2016-10-09 09:08:48 +08:00 via Android   ❤️ 2
    array_map
    jhdxr
        5
    jhdxr  
       2016-10-09 18:59:38 +08:00   ❤️ 2
    @lslqtz mysql_escape_string / mysql_real_escape_string 是属于 ext-mysql 的,这个在 5.5 里就已经废弃,并且从 7.0 开始被移除了。对于数据库连接,推荐使用 PDO 。

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

    最后,$GLOBALS 可以用来遍历所有变量,然而除非万不得已,不要这么做
    lslqtz
        6
    lslqtz  
       2016-10-09 21:59:16 +08:00   ❤️ 1
    @jhdxr 写了...
    mysqli 应该也行,我随便找的。
    不喜欢对象化
    lslqtz
        7
    lslqtz  
       2016-10-09 21:59:41 +08:00   ❤️ 1
    写 > 谢
    妈蛋我的铜币
    starvedcat
        8
    starvedcat  
    OP
       2016-10-10 02:57:48 +08:00
    @jhdxr 我用 firefox 的 html validator 插件,提示说“&”要用“&ampl ”代替,然后就搜索到了那个函数
    lslqtz
        9
    lslqtz  
       2016-10-10 07:54:37 +08:00
    @starvedcat 这是页面检查,输出的话我一般是直接输出的,因为没什么影响
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3117 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:20 · PVG 22:20 · LAX 06:20 · JFK 09:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.