Heim >Backend-Entwicklung >PHP-Tutorial >pdo到底有什么用?解决方案

pdo到底有什么用?解决方案

WBOY
WBOYOriginal
2016-06-13 11:14:301392Durchsuche

pdo到底有什么用?
百科上说
PDO扩展为PHP访问数据库定义了一个轻量级的、一致性的接口,它提供了一个数据访问抽象层,这样,无论使用什么数据库,都可以通过一致的函数执行查询和获取数据。PDO随PHP5.1发行,在PHP5.0的PECL扩展中也可以使用。 

这是什么意思?用pdo执行的查询代码即使更换了数据库也能正常运行?
SQL查询各个数据都不同的啊 ,比如mysql有limit,MSSQL没有limit,pdo会自动转换过来?
如果不行的话用pdo又有什么意义?

php 扩展
------解决方案--------------------
由于数据库的差异性,各个数据库的调用不是完全相同的,同样的程序如果使用不同的数据库存放数据时,需要对程序的数据处理部分进行改动,给移植带来不便。
用pdo,为数据库访问提供了一致的接口,只需在配置的连接参数中,配置不同的数据库驱动就可以了,而把对数据处理程序的改动降低到最小,甚至不需改动。为数据的处理及安全性都带来了很大的方便。
------解决方案--------------------
引用:
是不需要别的扩展吧。

以前每类数据库都要一个扩展,现在不用了。



其实也不能说与其他包完全没有依赖关系。

在php5.3后,php加入了一个叫mysqlnd的库,pdo_mysql会判断,如果定义了PDO_USE_MYSQLND这个宏,就使用mysqlnd提供的api来操作mysql,否则他需要知道你mysql的安装目录,去找mysql的.h文件,然后调用mysql本身的api。

还有php_mysql和php_mysqli,如果你在编译php时,指定了mysql的驱动为mysqlnd(--with-mysql=mysqlnd和--with-mysqli=mysqlnd),就使用mysqlnd的接口来操作mysql,否则你需要将--with-mysql和--with-mysqli指定为php-config,他会去使用mysql本身api。


php_pdo_mysql_int.h
--------------------------------
/* $Id$ */

#ifndef PHP_PDO_MYSQL_INT_H
#define PHP_PDO_MYSQL_INT_H

#if defined(PDO_USE_MYSQLND)
#   include "ext/mysqlnd/mysqlnd.h"
#   include "ext/mysqlnd/mysqlnd_libmysql_compat.h"
#   define PDO_MYSQL_PARAM_BIND MYSQLND_PARAM_BIND
#else
#   include 
#   define PDO_MYSQL_PARAM_BIND MYSQL_BIND
#endif
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn