使用pdo连接mysql数据库
使用pdo的代码执行速度与传统模式的速度相当。但在代码执行安全性方面,pdo使用预处理模式的安全性较高,并且使用pdo模式可以解决跨数据库平台操作。
以下是pdo连接使用数据库实例:
创建一个连接数据库类
class DbBase{
public $pdo;
public function __construct($db_host=FALSE, $db_name=FALSE, $db_user=FALSE, $db_pwd=FALSE){
$db_host = !empty($db_host)? $db_host :DB_HOST;
$db_name = !empty($db_name)? $db_name :DB_NAME;
$db_user = !empty($db_user)? $db_user :DB_USER;
$db_pwd = !empty($db_pwd)? $db_pwd :DB_PWD;
$this->pdo = new PDO('mysql:host='.$db_host.';dbname='.$db_name,$db_user,$db_pwd);
$this->pdo->exec("set names utf8");
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
}
连接数据库并执行
$obj = new DbBase('host','dbname','username','pwd');
$sql = 'SELECT * FROM pdo';
$obj_re = $obj->pdo->query($sql);
while($value=$obj_re->fetch(PDO::FETCH_ASSOC)){
print_r($value);
}
使用query方法执行sql语句,最后使用fetch()函数循环并打印结果fetch()可以设置不同的返回结果
POD::FETCH_NUM 每行按字段位置索引的数组,从0开始
POD::FETCH_BOTH NUM和ASSOC的直接组合,为默认方式
POD::FETCH_CLASS 通过指定类名,返回一个类的实例
POD::FETCH_COLUMN 返回当前指定列,返回一行数据
POD::FETCH_ASSOC 每行按字段名索引的数组
也可以使用预执行语句操作数据库
$sql = "SELECT * FROM pdo WHERE name = :name";
$obj_re = $obj->pdo->prepare($sql);
$name = 'test3';
$obj_re->bindParam(":name",$name,PDO::PARAM_STR);
$obj_re->execute();
$re = $obj_re->fetchAll();