PDO代码练习
1、PDO连接
<?php
namespace db_PDO;
use Exception;
use PDO;
// 准备连接数据
$arguments= require 'config.php';
extract($arguments);
$dsn=sprintf("{$type}:host={$host};dbname={$dbname};charset={$charset};port={$port}",$type,$host,$dbname,$charset,$port);
// 连接数据库
try{
$db= new PDO($dsn,$username,$password);
}catch(Exception $e)
{
echo $e->getMessage();
}
/*
测试连接
// var_dump($db);
$sql='select * FROM `students`';
$smit=$db->query($sql);
// $res=$smit->fetch(PDO::FETCH_ASSOC);
// print_r($res);
$res=$smit->fetchAll(PDO::FETCH_NUM);
print_r($res);
// 关闭数据库
// $db=null;
unset($db);
*/
2、PDO插入数据
<?php
require 'contect.php';
// 准备查询语句;
$sql="insert `students` SET `name`=?,`age`=?,sex=? ";
// sql语句预处理
$stmt=$db->prepare($sql);
// var_dump($stmt);
$data=['cqw',30,1];
// 执行预处理语句;
$stmt->execute($data);
// $stmt->debugDumpParams();
echo ($stmt->rowCount()===1)?'新增成功,新增的id是:'.$db->lastInsertId() : '新增失败'.$stmt->errorInfo();
unset($db);
3、PDO更新操作
<?php
require 'contect.php';
// 准备查询语句;
$sql="update `students` SET `name`=?,`age`=?,sex=? WHERE `id`=?";
// sql语句预处理
$stmt=$db->prepare($sql);
// var_dump($stmt);
$data=['xjw',31,1,3];
// 执行预处理语句;
$stmt->execute($data);
// $stmt->debugDumpParams();
echo ($stmt->rowCount()===1) ? '更新成功': '更新失败';
unset($db);
4、PDO查询操作
<?php
require 'contect.php';
// 准备查询语句;
$sql='select * FROM `students`';
// sql语句预处理
$stmt=$db->prepare($sql);
// var_dump($stmt);
// 执行预处理语句;
$stmt->execute();
/*
返回单条数据,指针下移
$res=$stmt->fetch(PDO::FETCH_ASSOC);
printf('<pre>%s</pre>',print_r($res,true));
$res=$stmt->fetch(PDO::FETCH_ASSOC);
printf('<pre>%s</pre>',print_r($res,true));
*/
$res=$stmt->fetchAll(PDO::FETCH_ASSOC);
printf('<pre>%s</pre>',print_r($res,true));
unset($db);
5、PDO删除数据
<?php
require 'contect.php';
// 准备查询语句;
$sql="delete FROM `students` WHERE `id`=?";
// sql语句预处理
$stmt=$db->prepare($sql);
// var_dump($stmt);
$data=[$_GET['id']];
// 执行预处理语句;
$stmt->execute($data);
// $stmt->debugDumpParams();
echo ($stmt->rowCount()===1) ? '更新成功': '更新失败';
unset($db);
总结:
1.PDO操作数据库连接所需参数($db=new PDO($dsn,$username,$password
)):
$dsn='type:host=$host;dbname=$dbname;charset=$charset;port=$port;'
$username='phpedu';
$password;
2.PDO 预处理(prepare()
):$stmt=$db->prepare($sql);
3.PDO 执行(execute()
):$stmt->execute();
4.PDO断开连接:$db=null
或者unset($db)
;
5.数据库增删改查语句():
增加:INSERT `表名` SET `字段`='值'....`字段`='值';
删除:DELETE FROM `表名` WHERE `字段`='值';
更新: UPDATE `表名` SET `字段`='值'....`字段`='值'WHERE `字段`='值';
查询:SELECT * FROM `表名` where `字段`='值';*可以替换需要查询字段
6.在sql语句中可以用(?
->数组对应),(:age
跟关联数组对应)代替,进行prepare($sql)预处理,在execute($data);绑定数据;
7.查询时返回的结果集可以通过fetch()或者fetchAll()来返回(PDO::FETCH_ASSOC|FETCH_NUM|FETCH_BOTH)
8.$stmt->rowCount():受影响的行数;PDO::lastInsertId():最后插入ID号;
9.$stmt->errorInfo():错误信息;$stmt->errorCode():错误代码;