Blogger Information
Blog 40
fans 3
comment 0
visits 48550
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
动态网页互动数据库增删改查,SQL预处理语句 - 2019线上班20191124
MArtian
Original
873 people have browsed it

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

Correcting teacher:查无此人查无此人

Correction status:qualified

Teacher's comments:完成的不错,继续加油。
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post