PHP 访问数据库
本文最后更新于:2024年3月18日 凌晨
PHP 访问数据库
- 在PHP中有两种访问数据库的方法,第一种是使用特定的数据库扩展,另一种是使用不依赖于数据库的PEAR BD库,两种方法各有优劣(其实更准确地说,第二种应该为使用数据库抽象层代码库,PEAR::DB只是其中一种,常见的还有PEAR::MDB2,ADOBE,PDO等)
- 如果使用特定的数据库扩展,则你的程序代码和所使用的数据库联系密切,因数据库而异,MySQL扩展的函数名,参数,错误处理等都和其他数据库扩展完全不同,如果想要把数据库从MySQL迁移到PostgreSQL,将会引起代码的重大改动,PEAR DB隐藏了各种数据库特有的功能,在数据库系统间迁移只需要简单地改动一行程序代码。
- 抽象层(如PEAR的DB库)的可移植性是有一定代价的,有些特定的数据库特性(例如,查找自动赋值的唯一行标识符的值)可能无法使用,使用PEAR DB的代码也比使用特定数据库扩展的代码执行速度慢。
- 注意抽象层(如PEAR DB)并不能保证你的SQL语句可以完全地被移植,如果你的程序使用了任何非通用(non-generic)的SQL,则在进行数据库迁移时需要对SQL语句做一些改动,对于大型应用程序,应该考虑编写一个功能抽象层,即对于程序所支持的每个数据库,都应当编写一系列函数来实现不同的数据库操作,如
get_user_record()
,insert_user_record()
和任何你需要的函数,同时还有一些配置选项来设置程序要连接到的数据库类型,这种方法让你使用所选择的数据库,而不用考虑抽象层的性能损失和限制,当然这需要一些时间来打草稿。 - 对于一个简单的应用程序,我们选择PEAR DB而不是特定的数据库扩展,不仅仅是因为迁移性而是为了易于使用,速度和特性的损失不足以迫使我们使用特定的数据库扩展(对于小项目而言有时速度并不是很重要,也用不到什么特殊的特性),本章的大部分示例代码将使用PEAR DB抽象类。
- 对于大多数数据库,需要选用何时的数据库驱动来重新编译PHP,无论你是否使用PEAR DB都必须这样做,在PHP源代码包所带的配置命令帮助信息会告诉你如何用各种数据库支持来编译PHP,例如:
配置命令 | 注释 |
---|---|
–with-mysql[=DIR] | Include MySQL support. DIR is the MySQL base directory. if unspecified, the bundled MySQL library will be used. (包含MySQL支持,DIR是MySQL的安装目录,如果没有指定,将会使用捆绑的MySQL库) |
–with–oci8[=DIR] | Include Oracle-oci8 support. Default DIR is ORACLE_HOME,.(包含Oracle-oci8支持,默认DIR是ORACLE_HOME) |
–with-ibm-db2[=DIR] | Include IBM DB2 support. DIR is the DB2 base install directory, defaults to /home/db2inst1/sqlib.(包含IBM DB2支持,DIR是DB2的基本安装目录,默认为/home/db2inst1/sqlib |
–with-pgsql-[=DIR] | Include PostgreSQL support, DIR is the PostgreSQL base install directory, defaults to usr/local/pgsql.(包含{pstgreSQL支持, DIR是PostgreSQL的基本安装目录,默认为/usr/local/pgsql) |
- 不能将自己的系统没有的数据库客户端库编译进PHP,例如,如果没有安装Oracle客户端代码库,就不能在编译PHP时使用Oracle数据库选项。
- 可以使用
phpinfo()
函数来检查在你的PHP中是否安装了某种数据库,例如,如果在配置报告种看到了有关MySQL的部分,就可以知道你的PHP已经可以支持MySQL数据库,在PHP5中新出现了一种名为"SQLite"的小型数据库,如期名称所示,SQLite是一个轻量级的数据库工具,这个数据库产品在PHP5中出现,并且称成为默认的数据库工具(以前是MySQL),在PHP中仍然可以使用MySQL,但是需要做一些简单的设置来启用它,PHP5默认绑定SQLite,所以如果你想找一个轻量级的小巧的数据库工具,可以选用SQLite
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!