Home  >  Article  >  Backend Development  >  为什么不推荐在PHP中使用诸如"mysql_xxx()"的函数

为什么不推荐在PHP中使用诸如"mysql_xxx()"的函数

WBOY
WBOYOriginal
2016-06-06 20:51:271067browse

今天,看到有人说不要再使用php的mysql_connect(), mysql_query()等函数了。
但是,我看到很多书籍教程里都用这种方法。
那么,为什么突然就不建议了呢?是基于什么技术背景考虑的呢?
不用这种方法,那应该选择哪种方法呢?

回复内容:

今天,看到有人说不要再使用php的mysql_connect(), mysql_query()等函数了。
但是,我看到很多书籍教程里都用这种方法。
那么,为什么突然就不建议了呢?是基于什么技术背景考虑的呢?
不用这种方法,那应该选择哪种方法呢?

难道是受到PDO及MySQLi的影响?

php也确实推荐过不要使用mysql_xx来连接MySQL数据库。推荐PDO、MySQLi来连接管理MySQL。

PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论你使用什么数据库,你都可以通过一致的函数执行查询和获取数据。注意,你并不能使用PDO扩展本身执行任何数据库操作,你必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器。
PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。
PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。PDO需要PHP5核心OO特性的支持,所以它无法运行于之前的PHP版本。

mysqli是PHP对mysql新特性的一个扩展支持。在PHP5中可以在php.ini中加载
mysql后面的i,指improved, interface, ingenious, incompatible or incomplete
-可以和mysql_xxxx一样的方式使用
-支持OO接口,简简单单调用
-支持MYSQL4。1引入的新特性
-通过mysqli_init() 等相关函数,可以设置高级连接选项

http://www.php.net/manual/en/mysqlinf...

官方有说明

我觉得还有一点, 现代的语言针对db client库的实现都有统一的dbapi接口来规范, 而mysql_xxx系列函数本身就是php初混乱命名的产物

PHP5.6以上的版本已将mysql_connect等函数废弃了,也就是说旧的程序一旦升级到了PHP5.6以上的版本,PHP就无法和数据库连接,网站系统到处的错误信息,甚至首页都打不开!!!

据说是这种方式存在安全隐患,个人感觉更可能是php为了朝oop发展,推荐开发者使用面向对象方式编程的原因吧

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn