第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>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时有晌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值