php操作MySQL数据库(三)

本文介绍了PHP PDO扩展的基本应用,包括连接MySQL数据库、预处理机制(prepare()、bindParam()、execute())、错误处理模式(SILENT、WARNING、EXCEPTION)以及事务处理(beginTransaction()、commit()、rollback())。通过示例代码详细讲解了PDO在处理SQL语句中的应用。
摘要由CSDN通过智能技术生成

PDO基本应用

PDO是PHP Data Object(PHP数据对象)的简称,它是与PHP5.1版本一起发布的,目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。当操作不同数据库时,只需要修改PDO中的DSN(数据库源) ,即可使用PDO的统一接口进行操作。
PDO支持多种数据库,对于不同的数据库有不同的扩展文件。若要启动对MySQL数据库驱动程序的支持,需要在php.ini配置文件中找到“;extension=php_pdo_mysql.dll”去掉分号注释以开启扩展。修改完成后重新启动Apache,通过phpinfo()函数查看PDO扩展是否开启成功,如图所示。
在这里插入图片描述
使用PDO扩展连接数据库,需要实例化PDO类,同时传递数据库连接参数,具体声明方式如下。

PDO::__construct ( string $dsn [, string $username [, string $password [, array $driver_options ]]] )
//设置数据库的DSN信息(数据库类型:主机地址;端口号;数据库名;字符集)
$dsn = 'mysql:host=localhost;port=3306;dbname=itcast;charset=utf8';
try{ 
      $pdo = new PDO($dsn, 'root', '123456');
      echo 'PDO 连接数据库成功'; 
}catch(PDOException $e){
      //连接失败,输出异常信息
      echo 'PDO连接数据库失败:'.$e->getMessage();
}
上述代码用于实例化PDO时进行数据库连接操作,如果连接发生失败就会抛出PDOException异常信息。通过try包裹可能发生异常的代码,利用catch进行异常处理。当PDOException异常发生时,调用getMessage()方法可以查看错误信息。

另外,PDO构造方法中的第4个参数$driver_options可以用于设置字符集(如果DSN中已经设置了字符集则不需要在此处设置),示例代码如下。

$options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
$pdo = new PDO($dsn, 'root', '123456', $options);
上述代码在实例化PDO对象时,把第4个参数添加上,就可以完成对数据库字符集的设置。

PDO 对象中提供了query()和exec()方法,用于执行 SQL 语句:

/通过query()方法执行查询类SQL,如:SELECT
$sql = 'SELECT * FROM `user`';
var_dump($pdo->query($sql)); 	//输出结果:object(PDOStatement)#2 (1) {……}
//通过exec()执行操作类SQL,如:INSERT、UPDATE、DELETE
$sql = "INSERT INTO `user` (`name`,`password`) VALUES ('小明', '123456')";
var_dump($pdo->exec($sql)); 	//输出结果:int(1)
需要注意的是,exec()方法不会对SELECT语句返回结果,而使用 query()方法可以获得返回结果。

PDO中常用获取结果集的方式有3种:
fetch()
fetchColumn()
fetchAll()
PDO 中的 fetch()方法可以从结果集中获取下一行数据:

mixed PDOStatement::fetch ([ int $fetch_style [, int $cursor_orientation =  PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] )
在上述语法中,可选参数$column_number用于设置行中列的索引号,该值从0开始。如果省略该参数,则获取第一列。该方法执行成功则返回单独的一列,失败返回false

若想要获取结果集中所有的行,可以使用 PDO 提供的 fetchAll() 方法

array PDOStatement::fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] )

在上述语法中, f e t c h s t y l e 参 数 用 于 控 制 结 果 集 中 数 据 的 返 回 方 式 , 默 认 值 为 P D O : : F E T C H B O T H ; 参 数 fetch_style参数用于控制结果集中数据的返回方式,默认值为 PDO::FETCH_BOTH;参数 fetchstyle<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值