11-3简化MySQLi面向对象新增操作–PHP实战开发教程

11-3简化MySQLi面向对象新增操作–PHP实战开发教程

皋贾膳乏怠社瞬哗策蔽浚港屏


删除杨过,小龙女,金轮法王后的表结构:

11-3简化MySQLi面向对象新增操作–PHP实战开发教程第1张


新建mysqli_pre_insert-1.php

11-3简化MySQLi面向对象新增操作–PHP实战开发教程第2张

代码:

<?php
/**
 * mysqli面向对象的预处理技术来实现新增操作(简化版)
 */
//1.连接数据库
require "mysqli_connect.php";
//2.准备SQL语句
$sql="insert ignore staff set name=?,salary=?";
//3.创建STMT预处理对象
$stmt=$mysqli->stmt_init();//使用mysqli对象的方法创建一个空的对象
//4.检测预处理SQL语句
//$stmt->prepare($sql)检测sql语句是否正确,正确返回true,并将数据包装为一个对象
//用于后面操作
if($stmt->prepare($sql))
{
    //创建二维数组来保存要添加的数据
    $data[]=['name'=>'杨过','salary'=>9000];
    $data[]=['name'=>'小龙女','salary'=>8000];
    $data[]=['name'=>'金轮法王','salary'=>7000];

    //绑定参数 可以认为参数$name,$salary只是一个占位符  并不是说这两个变量一定存在
    //而是会用变量$name,$salary来替换?
    $stmt->bind_param('si',$name,$salary);//st:参数(name,salary)类型为string,int

    foreach($data as $staff)
    {
        //执行插入语句
        $name=$staff['name'];//$name在这里才开始赋值,bind_param('si',$name,$salary)只是占位符
        $salary=$staff['salary'];//$salary在这里才开始赋值,bind_param('si',$name,$salary)只是占位符
        $stmt->execute();
        if($stmt->affected_rows>0)
        {
            echo "插入成功".$stmt->affected_rows."条数据,id是:".$stmt->insert_id."<br>";
        }
        else
        {
            echo "没有新增记录<br>";
        }

    }
//        5.注销stmt对象
    $stmt->close();

}
else
{
    //错误处理
    exit($stmt->errno.":".$stmt->error);
}
//6.关闭连接
$mysqli->close();

执行:

11-3简化MySQLi面向对象新增操作–PHP实战开发教程第3张

数据被插入:

11-3简化MySQLi面向对象新增操作–PHP实战开发教程第4张


灸什克撇柬疽行汇疥班缄咕冷