INSERT添加
<?php $sql='INSERT INTO `wuxia` (`name`,`from`,`skill`,`level`,`date`) VALUES ('{$info['name']}','{$info['from']}','{$info['skill']}','{$info['level']}','{$time}')'; $num = $pdo->exec($sql); $newIdx = $pdo->lastInsertId(); try{ if($num>0){ echo '<p>成功登记了'.$num.'条大侠信息,新增ID为'.$newIdx.' <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo); ?>
DELETE删除
<?php $sql="DELETE FROM `wuxia` WHERE `id`='{$info['id']}'"; $num = $pdo->exec($sql); try{ if($num>0){ echo '<p>成功删除了'.$num.'条大侠信息 <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo); ?>
UPDATE更新
<?php $sql="UPDATE `wuxia` SET `name` = '{$info['name']}',`from`='{$info['from']}',`skill`='{$info['skill']}',`level`='{$info['level']}',`update`='{$time}' WHERE `id`='{$info['id']}'"; $num = $pdo->exec($sql); try{ if($num>0){ echo '<p>成功更新了'.$num.'条大侠信息 <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo); ?>
SELECT查询
<?php $sql = 'SELECT `name`,`from`,`skill`,`level` FROM `wuxia` WHERE `level`>7'; $result = $pdo->query($sql); $result->setFetchMode(PDO::FETCH_ASSOC); $rows = $result->fetchAll(); echo '<table><thead><tr> <th>大侠姓名</th> <th>来自何处</th> <th>所习武功</th> <th>心法等级</th> </tr></thead>'; foreach ($rows as $row_v) { echo '<tr><td>' . $row_v['name'] . '</td> <td>' . $row_v['from'] . '</td> <td>' . $row_v['skill'] . '</td> <td>' . $row_v['level'] . '</td></tr>'; } echo '</table>'; ?>
预处理 -> INSERT添加
<?php $sql="INSERT INTO `wuxia` (`name`,`from`,`skill`,`level`,`date`) VALUES (:name,:from,:skill,:level,:date)"; $stmt = $pdo->prepare($sql); $stmt -> bindParam(':name',$info['name'],PDO::PARAM_STR_CHAR); $stmt -> bindParam(':from',$info['from'],PDO::PARAM_STR_CHAR); $stmt -> bindParam(':skill',$info['skill'],PDO::PARAM_STR_CHAR); $stmt -> bindParam(':level',$info['level'],PDO::PARAM_INT); $stmt -> bindParam(':date',$time); $num = $stmt -> execute(); $newIdx = $pdo -> lastInsertId(); try{ if($num>0){ echo '<p>成功登记了'.$num.'条大侠信息,新增ID为'.$newIdx.' <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo); ?>
预处理 -> DELETE删除
<?php $sql='DELETE FROM `wuxia` WHERE `id`=:id'; $stmt = $pdo->prepare($sql); $stmt -> bindParam(':id',$info['id'],PDO::PARAM_INT); $num = $stmt -> execute(); try{ if($num>0){ echo '<p>成功删除了'.$num.'条大侠信息 <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo);?>
预处理 -> UPDATE更新
<?php $sql = 'UPDATE `wuxia` SET `name`=:name,`from`=:from,`skill`=:skill,`level`=:level,`update`=:update WHERE `id`=:id'; $stmt=$pdo->prepare($sql); $stmt->bindParam(':name',$info['name'],PDO::PARAM_STR_CHAR); $stmt->bindParam(':from',$info['from'],PDO::PARAM_STR_CHAR); $stmt->bindParam(':skill',$info['skill'],PDO::PARAM_STR_CHAR); $stmt->bindParam(':level',$info['level'],PDO::PARAM_INT); $stmt->bindParam(':update',$time,PDO::PARAM_STR_CHAR); $stmt->bindParam(':id',$info['id'],PDO::PARAM_INT); $num = $stmt->execute(); try{ if($num>0){ echo '<p>成功更新了'.$num.'条大侠信息 <a href="javascript:window.history.back(-1)">返回</a></p>'; echo '<p>SQL语句为<br>'.$sql.'</p>'; } }catch (PDOException $e){ echo $e->getMessage(); } unset($pdo);?>
预处理 -> SELECT查询
<?php $sql = 'SELECT `name`,`from`,`skill`,`level` FROM `wuxia` WHERE `level`>:level'; $stmt = $pdo->prepare($sql); $stmt ->execute([':level'=>'7']); $stmt ->setFetchMode(PDO::FETCH_ASSOC); $rows = $stmt->fetchAll(); echo '<table><thead><tr> <th>大侠姓名</th> <th>来自何处</th> <th>所习武功</th> <th>心法等级</th> </tr></thead>'; foreach ($rows as $row_v) { echo '<tr><td>' . $row_v['name'] . '</td> <td>' . $row_v['from'] . '</td> <td>' . $row_v['skill'] . '</td> <td>' . $row_v['level'] . '</td></tr>'; } echo '</table>'; echo '<p style="text-align: center">总计'.$stmt->rowCount().'人</p>'?>
总结
1.预处理与普通SQL语句的区别是,预处理将SQL语句分离,不会导致数据库被注入,安全性高。
2.普通增删改使用 -> exec()
方法,查询使用 -> query()
方法,预处理增删改查都使用 -> execute()
方法。
3.预处理SQL语句需要适用占位符来代替数据通常写法 grade=:grade
,冒号后接字段名,避免混淆。
4.使用->execute()
方法给占位符赋值的时候,方法与定义数组相同例如:
execute([':name'='abc',':level'='20',':age'='18']) // 可以把占位符比作关联数组下标
5.使用bindParam()
是占位符绑定定义变量
,使用bindValue()
是占位符绑定值
,,使用bindColumn()
是占位符绑定列
。
6.在定义$dsn
的作为PDO
参数时候,不能有任何空格,否则会连接数据库失败。