利用PDO.so连接数据库

Posted 狱典司

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用PDO.so连接数据库相关的知识,希望对你有一定的参考价值。

Class PDO

  • 代表php和数据库服务之间的一个连接,功能主要是连接、查询
方法功能
__construcrt(string $dns [,string $username [,string $password [array $driver_opyions ]]] )创建一个表示数据库连接的PDO实例
mixed errorCode(void)获取数据库句柄上一次操作相关的SQLSTATE
public array errorInfo(void)获取与数据库句柄上的最后一个操作相关联的扩展错误信息
int exec(string $statement)执行一条SQL语句,并返回受影响的行数
mixed getAttribute(int $attribute)取回一个数据库连接的属性
string lastInsertId([string $name = NULL])返回最后插入行的ID或序列值
public PDOStatement prepare(string $statement [,array $driver_options = array()])准备要执行的语句并返回语句对象
public PDOStatementquery(string $statement)执行SQL语句,将结果集作为PDOStatement对象返回
bool setAttribute(int $attribute, mixed $value)设置属性

Class PDOStatement 结果集类

  • 代表一条预处理语句,并在该语句被执行后代表一个相关结果集
方法功能
PDOStatement::columnCount返回结果集中的列数
PDOStatement::errorCode获取跟上一次语句句柄操作相关的SQLSTATE
PDOStatement::errorInfo获取跟上次语句句柄操作相关的扩展错误信息
PDOStatement::execute执行一条预处理语句
PDOStatement::fetch从结果集中获取下一行
PDOStatement::fetchAll返回一个包含结果集中所有行的数组
PDOStatement::fetchColumn从结果集的下一行返单独的一列
PDOStatement::fetchObject获取下一行作为一个对象返回
PDOStatement::getAttribute检索一个语句属性
PDOStatement::getColumnMeta返回结果集中一列的元数据
PDOStatement::nextRowset在一个多行集语句句柄中推进到下一个行集
PDOStatement::rowCount返回受上一个SQL语句影响的行数
PDOStatement::setAttribute设置一个语句属性
PDOStatement::setFetchMode位于距设置默认的获取方式

DSN

dsn:数据源名称,包含了请求连接到的数据库的信息
通常,一个dns由PDO驱动名、紧随其后的冒号、以及具体的PDO驱动的连接语法组成。

dsn参数支持三种不同的方式创建一个数据库连接

  1. Driver invocation:包含完整的DSN
  2. URI invocation:dsn由uri组成:后跟一个uri,该uri定义了包含dsn字符串的文件的位置;URI可以指定本地文件或远程URL;
  3. Aliasing:dsn由映射到php.ini中定义dsn字符串的pdo.dsn.name的名称组成。
  • 返回值:成功则返回一个PDO对象。
  • 错误/异常:如果试图连接到请求的数据库失败,则PDO:: _construct()抛出一个PDO异常(PDOException)。

预定义常量

  • 下列常量由此扩展定义,且仅在此扩展编译入PHP或在运行时通过动态载入可用。
预定义常量功能
PDO::PARAM_BOOL (integer)表示布尔数据类型
PDO::PARAM_NULL (integer)表示SQL中的NULL数据类型
PDO::PARAM_INT (integer)表示SQL中的整型
PDO::PARAM_STR (integer)表示SQL中char、varchar或其它字符串类型
PDO::PARAM_LOB (integer)表示SQL中大对象数据类型
PDO::PARAM_STMT (integer)表示一个记录集类型,当前尚未被任何驱动支持
PDO::PARAM_INPUT_OUTPUT (integer)指定参数作为一个存储过程的inout参数。必须使用一个明确的 PDO::PARAM_*数据类型跟此值进行按位或
PDO::FETCH_LAZY (integer)指定获取方式,将结果集中的每一行作为一个对象返回,此对象的变量名对应着列名。PDO::创建用来访问的对象变量名。在PDOStatement::fetch All()中无效
PDO::FETCH_ ASSOC(integer)指定获取方式,将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列,则PDO::FETCH_ASSOC每个列名只返回一个值
PDO::FETCH_ NAMED(integer)指定获取方式,将对应结果集中的每一行作为一个由列名索引的数组返回。如果结果集中包含多个名称相同的列,则PDO::FETCH_ASSOC每个列名返回一个包含值的数组
PDO::FETCH_NUM (integer)指定获取方式,将对应结果集中的每一行作为一个由列号索引的数组返回,从0开始
PDO::FETCH_BOTH (integer)指定获取方式,将对应结果集中的每一行作为一个由列号和列名索引的数组返回,从0开始
PDO::FETCH_OBJ (integer)指定获取方式,将对应结果集中的每一行作为一个属性名对应列名的对象返回
PDO::FETCH_BOUND (integer)指定获取方式,返回TRUE且将结果集中的列值分配给通过PDOStatement::bindParam() 或PDOStatement::bindColumn() 方法绑定的PHP变量
PDO::FETCH_COLUMN (integer)指定获取方式,从结果集的下一行返回所需要的那一列
PDO::FETCH_CLASS (integer)指定获取方式,返回一个所请求类的新实例,映射列到类中对应的属性名 ( 如果所请求类在不存在该属性,则调用set()魔术方法 )
PDO::FETCH_INTO (integer)指定获取方式,更新一个请求类的现有实例,映射列到类中对应的属性名
PDO::FETCH_FUNC (integer)允许在运行中完全用自定义的方法处理数据( 仅在PDOStatement::fetchAll()中有效 )
PDO::FETCH_GROUP (integer)根据值分组返回。通常和PDO::FETCH_COLUMN或PDO::FETCH_KEY_PAIR一起使用
PDO::FETCH_UNIQUE (integer)只取唯一值
PDO::FETCH_KEY_PAIR (integer)获取一个有两列的结果集到一个数组,其中第一列为键名,第二列为值。
PDO::FETCH_CLASSTYPE (integer)根据第一列的值确定类名
PDO::FETCH_SERIALIZE (integer)类似PDO::FETCH_INTO,但是以一个序列化的字符串表示对象。
PDO::FETCH_PROPS_LATE (integer)设置属性前调用的构造函数
PDO::ATTR_AUTOCOMMIT (ingeter)获取一个有两列的结果集到一个数组,其中第一列为键名,第二列为值
PDO::ATTR_PREFETCH (ingeter)根据第一列的值确定类名
PDO::ATTR_TIMEOUT (ingeter)类似PDO::FETCH_INFO,但是以一个序列化的字符串表示对象
PDO::ATTR_ERRMODE (ingeter)
PDO::ATTR_SERVER_VERSION (ingeter)此为只读属性;返回PDO所连接的数据库服务的版本信息
PDO::ATTR_CLIENT_VERSION (ingeter)此为只读属性;返回PDO驱动所用客户端的版本信息
PDO::ATTR_SERVER_INFO (ingeter)此为只读属性;返回一些关于PDO所连接的数据库服务的元信息
PDO::ATTR_CONNECTION_STATUS (ingeter)
PDO::ATTR_CASE (ingeter)用类似PDO::CASE_*的常量强制列名为指定的大小写
PDO::ATTR_CURSOR_NAME (ingeter)获取或设置使用游标的名称;当可以使用滚动游标和定位更新的时非常好用。
PDO::ATTR_CURSOR (ingeter)选择游标类型。PDO当前支持PDO::CURSOR——FWDONLY和PDO::CURSOR_SCROLL
PDO::ATTR_DRIVER_NAME (ingeter)返回驱动的名称
PDO::ATTR_ORACLE_NULLS (ingeter)在获取数据时将空字符转换成SQL中的NULL
PDO::ATTR_PERSISTENT (ingeter)请求一个持久连接,而非创建一个新链接
PDO::ATTR_STATEMENT_CLASS (ingeter)
PDO::ATTR_FETCH_CATALOG_NAMES (ingeter)将包含的目录名添加到结果集中的每个列名前面;目录名和列名各有一个小数点分开(.)
PDO::ATTR_FETCH_TABLE_NAMES (ingeter)将包含的目录名添加到结果集中的每个列名前面;表名和列名各有一个小数点分开(.);此属性在驱动层面支持,所以有些驱动不可能支持此属性
PDO::ATTR_STRINGIFY_FETCHES (ingeter)
PDO::ATTR_MAX_COLUMN_LEN (ingeter)
PDO::ATTR_DEFAULT_FETCH_MODE (ingeter)
PDO::ATTR_EMULATE_PREPARES (ingeter)
PDO::ERRMODE_SILENT (ingeter)如果发生错误,则不显示错误或异常;希望开发人员显式地检查错误;此为默认模式
PDO::ERRMODE_WARNING (ingeter)如果发生错误,则显示一个PHP E_WARNING消息
PDO::ERRMODE_EXCEPTION (ingeter)如果发生错误,则显示一个PDOException消息
PDO::CASE_NATURAL (ingeter)保留数据库驱动返回的列名
PDO::CASE_LOWER (ingeter)强制列名小写
PDO::CASE_UPPER (ingeter)强制列名大写
PDO::NULL_NATURAL (integer)
PDO::NULL_EMPTY_STRING (integer)
PDO::NULL_TO_STRING (integer)
PDO::FETCH_ORI_NEXT (integer)在结果集中获取下一行;仅对可滚动游标有效
PDO::FETCH_ORI_PRIOR (integer)在结果集中获取上一行;仅对滚动游标有效
PDO::FETCH_ORI_FIRST (integer)在结果集中获取第一行;仅对滚动游标有效
PDO::FETCH_ORI_LAST (integer)在结果集中获取最后一行;仅对滚动游标有效
PDO::FETCH_ORI_ABS (integer)根据行号从结果集中获取需要的行;仅对可滚动游标有效
PDO::FETCH_ORI_REL (integer)根据当前游标位置的相对位置从结果集中获取需要的行;仅对可滚动游标有效
PDO::CURSOR_FWDONLY (integer)创建一个只进游标的PDOStatement对象;此为默认的游标选项,因为此游标最快且是PHP中最常用的数据访问模式
PDO::CURSOR_SCRPLL (integer)创建一个可滚动游标的PDOStatement对象;通过PDO::FETCH_ORI_*常量来控制结果集中获取的行
PDO::ERR_NONE (integer)对应SQLSTATE ‘00000’ ,表示SQL语句没有错误或警告地成功发出; 当用PDO::errorCode()或PDO::Statement::errorCode()来确定是否有错误发生时,此常量非常方便;在检查上述方法返回错误状态代码时候,经常会用到
PDO::PARAM_EVT_ALLOC (integer)分配事件
PDO::PARAM_EVT_FREE (integer)接触分配事件
PDO::PARAM_EVT_EXEC_PRE (integer)执行一条预处理语句之前出发的事件
PDO::PARAM_EVT_EXEC_POST (integer)执行一条预处理语句之后出发的事件
PDO::PARAM_EVT_FETCH_PRE (integer)从一个结果集中取出一条结果之前出发的事件
PDO::PARAM_EVT_FETCH_POST (integer)从一个结果集中取出一条结果之后出发的事件
PDO::PARAM_EVT_NORMALIZE (integer)在绑定参数注册允许驱动正常化变量名时出发事件

以上是关于利用PDO.so连接数据库的主要内容,如果未能解决你的问题,请参考以下文章

php pdo操作数据库的方法

利用python 连接数据库

怎样利用JDBC连接并操作Oracle数据库

php添加pdo_mysql.so的扩展

怎样利用JDBC连接并操作Oracle数据库

java 利用c3p0管理数据库连接池