我想有一个函数的行为像mysql_real_escape_string没有连接到数据库,因为有时我需要做干testing没有数据库连接。 mysql_escape_string已被弃用,因此是不可取的。 我的一些发现: http://www.gamedev.net/community/forums/topic.asp?topic_id=448909 http://w3schools.invisionzone.com/index.php?showtopic=20064
从MySQL库中迁移之后,我正在使用PDO。 我用什么来代替旧的real_escape_string()函数? 我需要逃避单引号,所以他们会进入我的数据库,我认为可能有更好的方法来处理这一点,而不添加斜杠到我所有的string。 有人能告诉我我应该用什么?
我已经看到这里有几个人声明,使用mysql_real_escape_string连接查询不会保护你(完全)SQL注入攻击。 但是,我还没有看到一个input示例,说明了mysql_real_escape_string不会保护您的攻击。 大多数示例忘记mysql_query仅限于一个查询,并且不正确地使用mysql_real_escape_string 。 我能想到的唯一例子如下: mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input)); 这不会保护您免受以下input: 5 OR 1=1 我会看到这是mysql_real_escape_string不正确使用,而不是一个缺点,它是专为string而不是数值。 您应该转换为数字types,或者如果要在input消息时将input视为string,则应在查询中执行相同的操作,并在其周围引号。 任何人都可以提供一个input的例子, mysql_real_escape_string不依赖不正确的数值处理,或忘记mysql_query只能执行一个查询吗? 编辑:我感兴趣的是mysql_real_escape_string的限制,而不是比较它的替代品,我知道有新项目更好的select,而不是争议。