PHP 操作数据库 PDO
- pdo 链接 mysql
//PDO连接Mysql数据库
$dbms = 'mysql';
$dbname = 'demo1';
$host = 'localhost';
$user = 'root';
$pwd = 'root';
$dsn = "$dbms:host=$host;dbname=$dbname";
try {
$pdo = new PDO($dsn, $user, $pwd);
$pdo->exec("set names 'utf8'");
//设置异常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//echo 'PDO连接Mysql成功!' . '<br>';
//var_dump($pdo);
/**
事务
*/
//事务
try{
//开启事务
$pdo ->beginTransaction();
$pdo->exec("insert into admin set name='ceshi56',pwd='".md5(123456)."',sex='1',age='20' ");
//提交
$pdo->commit();
}catch(Exception $e){
//抓住try里面出现的错误,并且处理
//echo $e->getMessage(); //获取异常信息
//回滚
$pdo->rollBack();
}
}catch (Exception $e) {
echo $e->getMessage() . "<br>";
}
- 查询mysql 数据 fetchAll , prepare , query
- fetchAll
$stmt = $pdo->query("select name,age,sex from admin ");
//$row_count = $stmt->rowCount(); // 返回条数 为空返回 0
//print_r($row_count);
$rows = $stmt->fetchAll(); //获取所有
for($i=0;$i<count($rows);$i++){
if($rows[$i]["sex"]=='0')
{
$sex = "女";
}else{
$sex = "男";
};
echo "姓名:".$rows[$i]["name"]."年龄:".$rows[$i]["age"]."性别:".$sex."<br>";
}
- prepare
使用Prepare和Execute方法
使用prepare和execute方法通常被认为是处理数据库查询的比较好的方法。首先,以SQL语句为参数调用PDO->prepare 方法,我们会得到一个返回的PDOStatment对象,并在这个对象上调用execute方法,然后 ,通过一个while循环重复调用PDOStatement->fetch方法来获取从数据库中查询的数据。
$stmt = $pdo->prepare("select name,age,sex from admin ");
if($stmt->execute()){
while($row = $stmt->fetch()){
if($row["sex"]=='0'){
$sex = "女";
}else{
$sex = "男";
};
//echo "姓名:".$row["name"];
echo "姓名:".$row["name"]."年龄:".$row["age"]."性别:".$sex."<br>";
}
}
上面这段代码就可以防范sql注入。为什么呢?
当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调 用到 execute()时,用户提交过来的值才会传送给数据库,它们是分开传送的,两者独立的,SQL攻击者没有一点机会。
转自:https://blog.youkuaiyun.com/qq_16752369/article/details/77119622
- query
使用Query方法
首先看一下最快的、但却不是最好的方法—–query方法。
$stmt = $pdo->query("select name,age,sex from admin ");
while($row = $stmt->fetch()){
if($row["sex"]=='0'){
$sex = "女";
}else{
$sex = "男";
};
//echo "姓名:".$row["name"];
echo "姓名:".$row["name"]."年龄:".$row["age"]."性别:".$sex."<br>";
}
- PDO 插入一条数据,修改,删除
//插入一条数据
if($pdo->exec("insert into admin set name='ceshi456',pwd='".md5(123456)."',sex='1',age='20' ")){
echo "插入成功";
echo $pdo->lastInsertId();
}
//修改数据
if($pdo->exec("update admin set name='ceshi123' where id='2' ")){
echo "修改成功";
echo "<br>";
}
//删除一条数据
if($pdo->exec("delete from admin where id='3' ")){
echo "删除成功";
echo "<br>";
}