# 链接MySQL - - - - - 示例
$type = 'mysql'; // 数据库类型
$host = '127.0.0.1';// 数据库主机名称
$dbName = 'tp5'; // 数据库名称
$user = 'tp5'; // 数据库连接用户名
$pass = '123456'; // 数据库连接密码
$dsn = "{$type}:host={$host};dbname={$dbName}";
// 链接数据库
try{
$dbh = new \PDO($dsn, $user, $pass);
echo "连接成功";
foreach ($dbh->query('SELECT * FROM `tp5_admins` WHERE `admin_id` < 3') as $row){
print_r($row);
}
$dbh = null;
}catch (PDOException $e){
exit("Error!:".$e->getMessage()."<br>");
}
# 持久连接在脚本结束后不会被关闭,且被缓存
# 当另一个使用相同凭证的脚本连接请求时被重用
# 持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快
$dbh = new \PDO($dsn, $user, $pass,array(
PDO::ATTR_PERSISTENT => true // 请求一个持久链接,并非创建一个新链接
));
# 如果当前数据库不支持抛出异常 PDOExeption 异常 $dbh 链接对象
# 开启事务 beginTransaction()
$dbh->beginTransaction();
# 提交事务
$dbh->commit();
# 回滚事务
$dbh->rollBack();
# prepare 方法 - 预处理语句进行重复插入
$stmt = $dbh->prepare(
"INSERT INTO tp5_admins (email,nick_name) VALUES (:email,:nick_name)"
);
//> bindParam 方法,绑定指定变量到指定参数
$stmt->bindParam(':email',$email); // 绑定:email <=> $email
$stmt->bindParam(':nick_name',$nick_name);
$email = "loveu@gmail.com";
$nick_name = 'i';
//> 执行 预处理插入语句
$stmt->execute();
# + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
// 预处理语句 使用 ? 占位符 - 无效形式 用于 %?% (无效使用)
$stmt = $dbh->prepare("INSERT INTO tp5_admins (email,nick_name) VALUES (?,?)");
// 使用 如下 这形式绑定
$stmt->bindParam(1,$email);
$stmt->bindParam(2,$nick_name);
$email = "loveu@gmail.com";
$nick_name = 'i';
//> 执行 预处理插入语句
$stmt->execute();
# + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
// 预处理语句
$stmt = $dbh->prepare("INSERT INTO tp5_admins (email,nick_name) VALUES (?,?)");
//> 执行 预处理插入语句 execute 参数
$stmt->execute(array(
'hexue@gmail.com','keKe'
));
# + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
// 返回一个 PDOStatement 实例对象
$stmt = $dbh->prepare("SELECT * FROM `tp5_admins` WHERE `admin_id` >= :id");
// execute 返回 bool 值:表示是否执行成功
if( $stmt->execute(array(':id'=>104)) ){
// fetch 执行查询数据
while ( $row = $stmt->fetch() ){
print_r($row);
}
}
PDO 方法
# PDO::quote - 为SQL语句中的字符串添加引号或转移特殊字符串
网友评论