您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
6-1 程序功能设计考察点
发布时间:2020-10-06 14:55:22编辑:雪饮阅读()
Pdo
Pdo是用于操作数据库的一种方式,且不仅仅可以操作mysql,虽然性能逊色于mysqli。其实mysqli和pdo一样都拥有预处理能力。预处理能力可以有效防止sql注入,例如常见的id=$_get[‘id’],那个从输入获取的id若值为“1 or 1=1”这种注入方式通过预处理则是id=:id,那么此时就告诉了mysql该语句中id=后面的部分是我们要输入的参数,那么mysql将会对该输入处进行处理,那么后面pdo进行填充替换:id后填充的值自然就被传递到:id的地方接受mysql的处理。
一个pdo操作示例如:
<?php
function myDump($val){
echo "<pre>";
print_r($val);
echo "</pre>";
}
try{
$dsn='mysql:dbname=xy;host=localhost';
$username='root';
$password='';
$attr=[
PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION
];
$pdo=new PDO($dsn,$username,$password,$attr);
$sql='insert into message(title,content,created_at,user_name) values(:title,:content,:created_at,:user_name)';
//预处理
$stmt=$pdo->prepare($sql);
$title="这是标题".time();
$content="这是内容".time();
$user_name="这是用户名".time();
//填充值并执行
$data=[
':title'=>$title,
':content'=>$content,
':created_at'=>time(),
':user_name'=>$user_name
];
$stmt->execute($data);
$rows=$stmt->rowCount();
if($rows){
exit('添加成功');
}
else{
exit('添加失败');
}
}
catch(PDOException $e){
echo $e->getMessage();
}
该实例中其它语法其实我之前就有接触过,而唯独PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION 没有印象,所以需要注意下PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION,其实PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION的意思是:
pdo内部有异常时:内部抛出异常,中断页面
关于PDO::ATTR_ERRMODE更多的信息可以从这里了解:http://www.gaojiupan.cn/xuewuzhijing/xindebiji/3228.html
关键字词:pdo,ATTR_ERRMODE,ERRMODE_EXCEPTION,php
上一篇:pdo异常处理
下一篇:8-1 常见算法考察点