-- 系统是 MySQL、PHP、Apache 并且代码是围绕 Codeigniter 框架构建的
编辑清楚:我不存储数据,我正在尝试检索几年前存储的数据(严重的是作为转义数据)。在数据库中,名称 Fred' 存储为 Fred' 但是当我使用 htmlspecialcahrs 转换 Fred' 时,它会显示为 Fred'。我的问题是我需要做什么才能让 Fred' 转换为 Fred' 和任何其他等价物?
原始问题
我从另一个系统(确切地说是 Invision Power Board)继承了一个数据库。该站点现在使用 Codeigniter 进行自定义编码,但使用与旧 Invision Power Board 站点相同的成员数据库。
我现在发现了一个问题,如果用户的名字中有撇号,例如“Fred”,codeigniter 内置的 html_escape 函数(仅使用 htmlspecialchars)会将其转换为 Fred'
然而在数据库中,名称被保存为:Fred',因此查找失败。
我不确定 Invision Power Board 在将字符串插入数据库之前对字符串做了什么,但有谁知道我如何确保将其转换为 ' 而不是 ' ?
简单地说做 str_replace 或更改数据库中的数据是没有用的,因为用户名中可能存在数百种可能性。快速搜索名称中带有 # 的用户(可能是一个特殊字符)会显示 440 个由于我们网站中的此错误而当前无法登录的用户。
编辑:修复了一些格式以删除“;” 所以它不只是显示一个撇号