我正在使用PHP版本5.3并尝试mysql_real_escape_string($unescaped_string)
在我的代码中使用,但是出现错误:
Fatal error: Call to undefined function mysql_real_escape_string()
in /var/www/engine/database.php on line 38
我仍然可以连接到数据库。为什么不可用?
我正在使用PHP版本5.3。
更新 中提到的评论,mysql_
一直以来5.5弃用:
自PHP
5.5起不推荐使用mysql扩展。应该改用mysqli或PDO扩展名。否决已在mysql_deprecation中确定,可以在此找到对该决定背后原因的讨论。
并 在PHP 7中删除 。
mysql_real_escape_string()
是MySQL函数“批处理”的标准部分,如果扩展名正确加载,它应该始终可以正常工作。
还有其他mysql_
功能吗?(不应该)
确保在您的中未注释此行php.ini
:
extension=mysql.so
同样明智的做法是使用mysqli
或PDO
代替(mysql_
已弃用),它们俩都可以为您进行转义。
问题内容: 所以这是我们所有人都应该知道的事情,当我第一次看到它时就在我脑海中浮现。 我知道该版本从5.3开始弃用,但的实际区别是什么。 我以为那是完全一样的,除了需要为mysql资源提供第二个参数。 因此,我当时很好地认为,字符串的处理方式一定有所不同,因为不需要2个函数。 因此,我当时认为区别完全在于语言环境和字符编码。? 谁能为我解决这个问题? 问题答案: 不同之处在于,仅将字符串视为原始字
问题内容: 我在这里看到一些人指出,使用串联查询不会(完全)保护您免受SQL注入攻击。 但是,我还没有看到一个输入示例,该示例说明了无法保护您免受攻击的攻击。大多数示例都忘记了仅限于一个查询并且使用不正确。 我能想到的唯一示例如下: 这不会保护您免受以下输入的影响: 我认为这是不正确的用法,而不是缺点,它是为字符串而非数字值设计的。您应该转换为数字类型,或者如果要在消毒时将输入视为字符串,则应在查
问题内容: 有些人认为这样做存在一些缺陷,即使正确使用也无法保护您的查询。 带一些化石的物品作为证明。 因此,问题是:mysql [i] _real escape_string()完全不可接受吗? 还是仍然可以使用此功能来创建自己的预备语句? 请提供校对码。 问题答案: 从MySQL的C API函数描述 : 如果需要更改连接的字符集,则应使用函数而不是执行(或)语句。的工作方式类似,但也会影响所使
问题内容: 我很沮丧 我希望能够在数据库名称中插入单引号-例如O’Connor。 因此,当插入数据库时,我这样做: 然后,我将$ lname插入数据库。 在数据库中时,它显示为O 'Connor。 因此,如果要在Web应用程序中记住该姓氏,则必须使用: 这一切似乎都很好。但是,我有一个搜索功能,可以搜索姓氏并显示结果。当我搜索时,我必须搜索O 'Connor以获得任何结果。 您会发现,在搜索之
问题内容: 我的代码- 错误- > 警告:mysql_real_escape_string()[function.mysql-real-escape-string]:在C:\ xampp \ htdocs \ shizin \ admin \中拒绝访问用户’ODBC’@’localhost’(使用密码:NO)第48行的newArticle.php 警告:mysql_real_escape_stri
问题内容: 有人可以从PHP手册中了解这两个函数之间的区别吗? addslashes:返回一个字符串,在数据库查询等中需要加引号的字符之前带有反斜杠。这些字符是单引号(’),双引号(“),反斜杠()和NUL(空字节)。 mysql_real_escape_string:mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数