PDO是PHP Data Object即PHP数据对象的简称,它是与PHP5.1版本一起发布的,目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、PostgreSQL、SQLite和Sybase。当操作不同数据库时,只需要修改PDO中的DSN(数据库源),即可使用PDO的统一接口进行操作。
使用PDO扩展连接数据库,需要实例化PDO类,同时传递数据库连接参数。
PDO::__construct ( string $dsn[, string $username [, string $password [, array $driver_options]]] )
参数$dsn用于表示数据源名称,包括PDO驱动名、主机名、端口号、数据库名称。
参数$username表示用户名。
参数$passwd表示密码。
注意:
在使用PDO连接数据库时,需要了解以下两点:
• 数据源中的 PDO 驱动名即要连接的数据库服务器类型,如 mysql 、 oracle 等。
• 数据源中的端口号和数据库的位置可互换。
连接数据库:
<?php
$dsn="mysql:host=localhost;dbname=school";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
//$dsn="mysql:host=localhost;dbname=school;charset=utf8";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
try{
//第四个参数 设置相关参数
$options=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set names 'utf8'");
$pdo=new PDO($dsn,"root","123456",$options);//如果成功返回pdo对象 否则抛出一个异常
var_dump($pdo);//object(PDO)#1 (0) { }
}catch(PDOException $e){//捕获异常
echo $e->getMessage();//显示异常信息
}
?>执行sql语句:
<?php
$dsn="mysql:host=localhost;dbname=school";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
//$dsn="mysql:host=localhost;dbname=school;charset=utf8";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
try{
//第四个参数 设置相关参数
$options=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set names 'utf8'");
$pdo=new PDO($dsn,"root","123456",$options);//如果成功返回pdo对象 否则抛出一个异常
$sql="insert into websites values(null,'京东3','https://www.jingdong.com',1,'CN');";
/*//第一种方法
if($pdo->query($sql)){//执行sql语句
echo "添加成功";
echo "proid是:".$pdo->lastInsertId();//插入最近记录的id
}else{
echo "添加失败";
}*/
//第二种方法
if($pdo->exec($sql)){
echo "添加成功";
echo "proid是:".$pdo->lastInsertId();//插入最近记录的id
}else{
echo "添加失败";
}
//query()和exec()都可以
//一般执行查询类语句:query()
//操作类语句语句:exec()
}catch(PDOException $e){//捕获异常
echo $e->getMessage();//显示异常信息
}
?>预处理:
<?php
$dsn="mysql:host=localhost;dbname=school";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
//$dsn="mysql:host=localhost;dbname=school;charset=utf8";//如果要更改数据库 只需要修改前面驱动就可以了,如将mysql换成oracle
try{
//第四个参数 设置相关参数
$options=array(PDO::MYSQL_ATTR_INIT_COMMAND=>"set names 'utf8'");
$pdo=new PDO($dsn,"root","123456",$options);//如果成功返回pdo对象 否则抛出一个异常
//预处理
//通过命名参数占位符的方式
//$sql="insert into websites values(null,:name,:url,:aleax,:country);";
//$stmt=$pdo->prepare($sql);//生成一个预处理语句 返回一个PDOStatement对象
//方法1
//绑定语句
/*$name="阿里";
$url="https://www.ali.com";
$aleax=1;
$country="USA";
$stmt->bindParam(":name",$name);//必须先定义变量再使用参数
$stmt->bindParam(":url",$url);
$stmt->bindParam(":aleax",$aleax);
$stmt->bindParam(":country",$country);
//执行
var_dump($stmt->execute());//bool(true)*/
//方法2
//绑定语句
//$array=array(":name"=>"QQ",":url"=>"https://www.qq.com",":aleax"=>'2',":country"=>'CN');
//var_dump($stmt->execute($array));//bool(true)
//通过?占位符的方式
$sql="insert into websites values(null,?,?,?,?);";
$stmt=$pdo->prepare($sql);//生成一个预处理语句 返回一个PDOStatement对象
//绑定语句
$name="阿里22";
$url="https://www.ali.com";
$aleax=1;
$country="USA";
// $stmt->bindParam(1,$name);//必须先定义变量再使用参数
// $stmt->bindParam(2,$url);
// $stmt->bindParam(3,$aleax);
// $stmt->bindParam(4,$country);
// //执行
// var_dump($stmt->execute());
//方法2
$array=array("QQ","https://www.qq.com",'2','CN');
var_dump($stmt->execute($array));
}catch(PDOException $e){//捕获异常
echo $e->getMessage();//显示异常信息
}
?>
版权声明:本文为Doulvme原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。