博客列表 >动态网页互动数据库增删改查,SQL预处理语句 - 2019线上班20191124

动态网页互动数据库增删改查,SQL预处理语句 - 2019线上班20191124

MArtian
MArtian原创
2019年11月24日 20:50:10858浏览

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);
    ?>

insert.gif

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);
    ?>

delete.gif

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);
    ?>

update.gif

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>';
    ?>

select.png


预处理 -> 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);
    ?>

prepareInsert.gif

预处理 -> 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);?>

prepareDelete.gif

预处理 -> 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);?>

prepareUpdate.gif

预处理 -> 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>'?>

prepareSelect.png


总结

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参数时候,不能有任何空格,否则会连接数据库失败。

1.jpg2.jpg

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议