在刚刚接触PHP时,曾遇到过这样一个坑,就是在PHP7.0版本中无法使用mysql连接数据库,当时只好降级PHP版本来通过mysql来连接数据库(很无奈的做法),但作为一个与时俱进的程序员,必须学习新的技术才能保持竞争力,所以今天就介绍一下利用PDO_mysql连接MySQL,这也是PHP新版本推荐使用的一个扩展。
PDO_mysql操作
- 在php.ini中开启PDO_mysql扩展
//取消注释
extension=php_pdo_mysql.dll
- 实例化PDO对象
构造方法中有4个参数:
$dsn:Data Source Name 数据源名称,需要的数据来源的描述
$username:数据库用户名
$password:数据库密码
$driver_options:驱动选项,对应当前数据库服务器中一些特定的初始化工作。
//说明数据库类型,地址,端口,数据库名
$dsn = 'mysql:host=127.0.0.1;port=3306;dbname=php';
$username = 'root';
$password = 'admin';
$driver_options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES UTF8',);
$pdo = new PDO($dsn,$username,$password,$driver_options);
- 发送SQL到服务器,等待返回结果
PDO初始化完成就以为这已经连接到数据库,接下来要做的就是通过SQL进行数据库操作。
$sql = "show databases";
$result = $pdo->query($sql);
- 得到结果,处理结果
返回的结果被PDOStatement
类对象管理,返回的结果会自动封装为该对象,这里我们使用这个对象中fetchAll()
方法来展示查询到的所有结果,默认返回关联性索引集合,如果需要返回数值型索引,传入PDO::FETCH_NUM
$list = $result->fetchAll(PDO::FETCH_NUM);
PDO对象中的常用方法
1.errorInfo()
和errorCode()
:获取错误信息。
if(!$result = $pdo->query("show databases")){
//错误信息
var_dump($pdo->errorInfo());
//错误代码
var_dump($pdo->errorCode());
}
2.beginTransaction()
:开始事务
3.rollback()
:回滚事务
4.commit()
:提交事务
5.inTransaction()
:判断是否处于事务中
6.lastInsertID()
: 获取最后形成的auto_increment字段的值
7.Exec()
:又一个执行SQL的方法,区别于query(),返回值类型不同。Exec()返回值类型为整型(表示当前所执行SQL所影响的记录数,用于非查询类),query()返回对象(用于执行查询类)