1.pdo操作:连接、增删查改操作(手写)
首先创建PDO对象,建立与数据库服务器的连接。
<?php
//连接mysql1
/*
try{
$pdo = new PDO('mysql:host=localhost;dbname=jason','root','root');
print_r($pdo);
} catch (PDOException $exception){
echo ('数据库连接异常'.$exception->getMessage());
}
*/
//方式2
$db = [
'type' => 'mysql',
'host' => 'localhost',
'dbname' => 'jason',
'port' => '3306',
'username' => 'root',
'password' => 'root'
];
//配置dsn
$dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
try{
$pdo1 = new PDO($dsn,$db['username'],$db['password']);
print_r($pdo1);
} catch (PDOException $exception){
echo '数据库连接方式1错误。。'.$exception->getMessage();
}
pdo增加数据
<?php
require_once __DIR__ . '/connect.php';
//sql语句增加操作
$sql = 'INSERT INTO `category` SET `name`=:name ,`alias`=:alias , `cate_id`=:cate_id';
//预处理
//预处理语句预先将sql命令分析一次,可以多次执行,提高了处理效率,而且能有效防止SQL注入。
$stmt = $pdo1 -> prepare($sql);
//绑定参数
$name = 'rb';
$alias = '日本';
$cate_id = 4;
//bindParam(参数1:'字段名',参数2:(要改变的内容),参数3:参数类型)
$stmt->bindParam('name',$name,PDO::PARAM_STR);
$stmt->bindParam('alias',$alias,PDO::PARAM_STR);
$stmt->bindParam('cate_id',$cate_id,PDO::PARAM_INT);
//执行操作
if ($stmt -> execute()){
//使用预处理更新数据,rowCount()返回影响行数,大于0即表示执行成功的记录数。
if ($stmt ->rowCount() > 0){
echo '数据库增加成功=数量'.$stmt->rowCount();
}
}else{
echo '数据添加失败'.$stmt->errorCode();
}
pdo删除数据
<?php
require_once __DIR__ .'/connect.php';
//sql语句
$sql = 'DELETE FROM `category` WHERE `cate_id` = :cate_id';
//预处理
$stmt = $pdo1->prepare($sql);
//绑定
$cate_id = 5;
$stmt->bindParam('cate_id',$cate_id,PDO::PARAM_STR);
//操作
try {
if ($stmt->execute()){
if ($stmt->rowCount()>0){
echo '删除数据成功,删除数据行'.$stmt->rowCount();
}else{
echo '删除数据失败,没有此数据';
}
}else{
echo '删除数据失败='.$stmt->errorCode();
}
}catch (PDOException $exception){
echo '数据库操作异常'.$exception->getMessage();
}
pdo更新数据
<?php
require_once __DIR__.'/connect.php';
//sql改语言
$sql = 'UPDATE `system` SET `copy` = :copy WHERE `sys_id` = :sys_id';
//预处理
$stmt = $pdo1->prepare($sql);
//绑定参数
$copy = 'jason';
$sys_id = 1;
$stmt->bindParam('copy',$copy,PDO::PARAM_STR);
$stmt->bindParam('sys_id',$sys_id,PDO::PARAM_INT);
//HY093错误信息绑定失败,42s22表示字段错误,检查sql语句和数据库字段是否相等
try{
if ($stmt->execute()){
if ($stmt->rowCount()>0){
echo '修改资料成功,影响数量'.$stmt->rowCount();
}else{
echo '没有匹配到对应的数据或改变数据和原有的一致,修改失败,请检查sql语句';
}
}else{
echo '修改资料失败'.$stmt->errorCode();
}
} catch (PDOException $exception){
echo '数据库操作异常'.$exception->getMessage();
}
pdo查询数据
<?php
require_once __DIR__.'/connect.php';
echo '<hr>';
//sql语句
$sql = 'SELECT *FROM `account`';
//预处理
$stmt = $pdo1->prepare($sql);
//执行查询操作
try{
if ($stmt->execute()){
foreach ($stmt->fetchAll() as $arr){
echo '名字='.$arr['username'] .'-----' .'公司='.$arr['department_list'];
echo '<hr>';
}
}else{
echo '执行查询操作失败,error='.$stmt->errorCode();
}
}catch (PDOException $exception){
echo '数据库操作异常'.$exception->getMessage();
}
//销毁数据库连接
$pdo1 = null;
print_r("销毁".$pdo1);
pdo查询运行效果
手写代码
总结
PDO为PHP访问各类数据库定义了一个轻量级一致性的接口,无论什么数据库,都可以通过一致的方法执行查询和获取数据,而不用考虑不同数据库之间的差异,大大简化了数据库操作。使用PDO可以支持mysql、postgresql、oracle、mssql等多种数据库;创建设置PDO对象-》编写SQL语句-》预处理-》绑定参数-》启动事务操作-》销毁