一、连接数据库
**写法:
**$pdo= new PDO(‘数据库类型:地址;库名’,’账号’,’密码’);
把所有数据写成变量,方便后期更改
数据源附变量
$db =[
‘type’ => ‘mysql’,//数据库类型;
‘host’ => ‘127.0.0.1’,//附有ip地址的网址或ip地址;
‘dbname’ => ‘mysql1’,//库名;
‘user’ => ‘root’,//实际账号;
‘password’ => ‘root’,//实际密码;
‘prot’ => 3306,//端口;
]
数据源配置
1、使用连接符,字符串用单引号,与变量用.连接
$dsn = $db[‘type’].’:host=’.$db[‘host’].’;dbname=’.$db[‘dbname’];
2、使用双引号,变量用花括号包裹
$dsn = “{$db[‘type’]}:host={$db[‘host’]};{$db[‘dbname’]}”;
实际书写
$pdo = new PDO($dsn,$db[‘user’],$db[‘password’]);
例:
<?php
$db= [
‘type’ => ‘mysql’,
‘host’=> ‘127.0.0.1’,
‘dbname’ => ‘mysql1’,
‘username’=>’root’,
‘password’=>’root’,
‘prot’ => 3306
];
//数据源配置
//双引号里面的变量需要用花括号包裹起来
$dsn = “{$db[‘type’]}:host={$db[‘host’]};dbname={$db[‘dbname’]}”;
//连接符连接变量时,变量不加引号,字符串及符号加单引号
$dsn=$db[‘type’].’:host=’.$db[‘host’].’;dbname=’.$db[‘dbname’];
//try是报错时常用
try{
//如果链接出错就会执行catch里面的代码
//不出错不执行,等于错误提示
//连接数据库
$pdo = new pdo ($dsn,$db[‘username’],$db[‘password’]);
//意思是把错误赋值给一个变量
}catch ( PDOException $e ){
//die是停止执行代码的意思,里面有很多方法
//方法只允许在他里面使用
// -> 如果错误就执行getMessage的方法
die( ‘错误信息:’.$e ->getMessage() );
}
二、创建SQL语句模板(语句增删改查都可以)
1、增加数据(所有语句用引号包裹,封号结束)
//变量值前面用冒号代表变量,下面需要给变量赋值才可以
$变量 = ‘INSERT INTO 表名
SET 字段名
=:’变量值’;
$sql = ‘INSERT INTO category
SET cate_id
=:id, name
=:n,alias
=:a’;
例:
<?php
//增加
//1、引入连接数据库文件
include ‘moban.php’;
//2、创建SQL语句预处理模板
//:冒号为了占位用来接收值,相当于变量
$sql = ‘INSERT INTO category
SET cate_id
=:cate,name
=:n,alias
=:a’;
//3、预处理
//意思是链接的在数据据库里预处理$sql这个变量模板,
//这个变量是增加数据库的信息;
$stmt=$pdo ->prepare($sql);//执行预处理模板
//4、绑定到预处理模板参数,
//用->执行,格式:预处理变量->bindParam(‘冒号后面变量’,’设置的变量’,PDO::PARAM_INT/STR,常量);
$cate=5;
$n=’els’;
$a=’俄罗斯’;
$stmt -> bindParam(‘cate’,$cate,PDO::PARAM_INT);
$stmt -> bindParam(‘n’,$n,PDO::PARAM_STR);
$stmt -> bindParam(‘a’,$a,PDO::PARAM_STR);
//执行绑定参数模板
$add=$stmt -> execute();
//判断是否添加成功,成功代表添加SQL语句没有出错
if ($add){
$count = $stmt -> rowCount();
//判断插入的条数,SQL语句写法没有报错
if ($count > 0 ){
echo ‘成功添加’.$count.’条数据’;
}else{
echo ‘数据插入失败’;
}
}else{
die(print_r($stmt ->errorInfo(),true));
}
//销毁变量
$pdo=null;等价于unset($pdo);
2、更新数据
//只需要在增加数据的基础上,增加更改条件即可
$变量 = ‘UPDATE 表名
SET 字段名
=’值’ WHERE 条件
‘;
$sql = ‘UPDATE category
SET name
=:n WHERE cate_id
=:id’;
例如:
<?php
//改—-类似增加
include ‘moban.php’;
//cate_id=:id';一定要给条件给个变量
$sql = 'UPDATE
categorySET
name=:n,
alias=:a WHERE
cate_id`=:id’;
$stmt=$pdo ->prepare($sql);
$n=’fei’;
$a=’非洲’;
$id= 7;
$stmt -> bindParam(‘n’,$n,PDO::PARAM_STR);
$stmt -> bindParam(‘a’,$a,PDO::PARAM_STR);
$stmt -> bindParam(‘id’,$id,PDO::PARAM_INT);
$add=$stmt -> execute();
if ($add){
$count = $stmt -> rowCount();
if ($count > 0 ){
echo ‘数据修改成功’;
}else{
echo ‘数据修改失败’;
}
}else{
die(print_r($stmt ->errorInfo(),true));
}
3、删除数据
//不要绑定值,只要ID即可
$变量 = ‘DELETE FROM 表名
WHERE 条件
‘;
$sql = ‘DELETE FROM category
WHERE cate_id
=:id’;
4、查询数据
$变量 = ‘SELECT FROM 表名
‘;
$sql = ‘SELECT FROM category
‘ ;
例:
<?php
//查
include ‘moban.php’;
//只放表名,不设条件等于全局查询出
$sql = ‘SELECT * FROM category
‘ ;//预处理模板
$stmt =$pdo ->prepare($sql);//执行模板,$pdo是数据库链接的变量,等于可以进入数据库
$add = $stmt ->execute();//执行绑定语句
if ($add){
$arr=$stmt ->fetchALL();//查询所有
foreach ($arr as $v){
echo $v[‘cate_id’].’—-‘.$v[‘name’].’—-‘.$v[‘alias’];
echo ‘<hr>‘;
}
}else{
die(print_r($stmt ->errorInfo(),true));
}
总结(pdo流程):
1、连接数据库
$pdo = new pdo ($dsn,$db[‘username’],$db[‘password’]);
2、创建SQL语句模板
增:$sql = ‘INSERT INTO category
SET cate_id
=:id, name
=:n,alias
=:a’;
改:$sql = ‘UPDATE category
SET name
=:n WHERE cate_id
=:id’;
删:$sql = ‘DELETE FROM category
WHERE cate_id=:id’;
查:$sql = ‘SELECT * FROM category
‘ ;
3、创建SQL语句对象
$stmt =$pdo ->prepare($sql);
4、绑定值
$cate=5;
$stmt -> bindParam(‘cate’,$cate,PDO::PARAM_INT);
6、执行绑定值
$add = $stmt -> execute();
7、处理返回结果
8、销毁变量
$pdo = null;
手抄: