第098讲 php数据库编程⑩-使用mysqli扩展库增强(预处理技术)

image
如上方案三就是使用预编译技术—-该方案还可以防止sql注入攻击
image

执行程序前

mysql> select * from words;
+----+----------+----------+
| id | enword   | chword   |
+----+----------+----------+
|  1 | one      | 一       |
|  2 | two      | 二       |
|  3 | thr      | 三       |
|  4 | four     | 四       |
|  5 | five     | 五       |
|  6 | six      | 六       |
| 10 | boys     | 男孩儿们 |
|  9 | boy      | 男       |
| 11 | wc       | 厕所     |
| 12 | girl     | 女       |
| 13 | girls    | 女孩们   |
| 14 | test     | 测试     |
| 15 | test     | 测试     |
| 16 | phone    | 手机     |
| 17 | telphone | 手机     |
+----+----------+----------+
15 rows in set (0.19 sec)

执行程序

<?php
    header("content-type:text/html;charset=utf-8");
    //需求使用预处理方式添加三个或多个用户
    //演示预编译
    //1、创建mysqli对象
    $mysqli = new MySQLi('localhost','root','tmdqobn','db100');
    //2、创建预编译对象
    $sql = "insert into words (enword,chword) values (?,?)";//预编译的话 values 后边不填写具体的值直接用?作为占位符替代
    $mysqli_stmt=$mysqli->prepare($sql);
    //绑定参数
    $enword="test1";
    $chword="测试1";
    $mysqli_stmt->bind_param("ss",$enword,$chword);//bind_param 内部type 对照着表创建的字段类型->字符串用s表示,int用i表示  double 用d表示 还有一个不常用的b 碰到再说吧。
    $isSuccess = $mysqli_stmt->execute();
    if(!$isSuccess){
        die("操作失败".$mysqli_stmt->error);
    }else{
        echo "操作成功";
    }


    //绑定参数
    $enword="phone1";
    $chword="手机1";
    $mysqli_stmt->bind_param("ss",$enword,$chword);//bind_param 内部type 对照着表创建的字段类型->字符串用s表示,int用i表示  double 用d表示 还有一个不常用的b 碰到再说吧。
    $isSuccess = $mysqli_stmt->execute();
    if(!$isSuccess){
        die("操作失败".$mysqli_stmt->error);
    }else{
        echo "操作成功";
    }

    //绑定参数
    $enword="telphone1";
    $chword="手机1";
    $mysqli_stmt->bind_param("ss",$enword,$chword);//bind_param 内部type 对照着表创建的字段类型->字符串用s表示,int用i表示  double 用d表示 还有一个不常用的b 碰到再说吧。
    $isSuccess = $mysqli_stmt->execute();
    if(!$isSuccess){
        die("操作失败".$mysqli_stmt->error);
    }else{
        echo "操作成功";
    }


    for($i=0;$i<10;$i++){
        $enword = $i;
        $chword = $i+100;
        $mysqli_stmt->bind_param("ss",$enword,$chword);
        $isSuccess = $mysqli_stmt->execute();

        if(!$isSuccess){
        die("操作失败".$mysqli_stmt->error);
        }else{
            echo "操作成功";
        }
    }
    $mysqli->close();
?>

执行完程序后

mysql> select * from words;
+----+-----------+----------+
| id | enword    | chword   |
+----+-----------+----------+
|  1 | one       | 一       |
|  2 | two       | 二       |
|  3 | thr       | 三       |
|  4 | four      | 四       |
|  5 | five      | 五       |
|  6 | six       | 六       |
| 10 | boys      | 男孩儿们 |
|  9 | boy       | 男       |
| 11 | wc        | 厕所     |
| 12 | girl      | 女       |
| 13 | girls     | 女孩们   |
| 14 | test      | 测试     |
| 15 | test      | 测试     |
| 16 | phone     | 手机     |
| 17 | telphone  | 手机     |
| 18 | test1     | 测试1    |
| 19 | phone1    | 手机1    |
| 20 | telphone1 | 手机1    |
| 21 | 0         | 100      |
| 22 | 1         | 101      |
| 23 | 2         | 102      |
| 24 | 3         | 103      |
| 25 | 4         | 104      |
| 26 | 5         | 105      |
| 27 | 6         | 106      |
| 28 | 7         | 107      |
| 29 | 8         | 108      |
| 30 | 9         | 109      |
+----+-----------+----------+
28 rows in set (0.00 sec)

mysql>

猜你喜欢

转载自blog.csdn.net/u014449096/article/details/81285087