因此,在我的应用程序中,我通过名为db_connect();的函数访问了数据库。很简单,它提供了必要的登录信息,并通过mysql_connect和mysql_select_db打开了数据库连接。
现在我正在工作,我发现主程序员使用PDO。花式。但是,它看起来或多或少像我以前使用的同一个面向对象的版本。
那么以我以前的方式执行它,或者使用自动连接到数据库的构造函数编写类“db”之间的区别是什么?
在这两种情况下,我都必须连接到db /创建一个新对象,在任何一种情况下都占用一行。
它是一个花哨的库来抽象出数据库连接的细节吗?
我唯一能想到的是OO版本中有一个析构函数,这意味着我不必编写“db_close()”...
爱德华 - 我是谁! (Please'm)答案 0 :(得分:4)
您的数据库库是功能性还是面向对象本身并不是真正相关,但PDO非常现代,并且与普通的mysql_connect()
和consorts相比具有许多优势,最重要的是参数化查询使SQL注入无法实现
此外,PDO支持a whole lot more database platforms。
从体系结构的角度来看,OOP方法也很有意义,它不仅仅是装饰:您创建一个PDO对象,它是您的数据库连接。多个对象=多个连接。将结果集包装到对象中 - 提供获取行,跳过,快退等所有函数....也非常合乎逻辑。
如果我要为新项目选择数据库包装器,我肯定会使用mysql_*()
上的PDO。