PHP mysqli 预处理

本文介绍了一个使用PHP和MySQL预处理语句创建数据库、表及插入数据的例子。通过预处理可以有效地防止SQL注入攻击,并提高代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建数据库test和对应的表test,通过预处理向test表中插入多条数据。
代码如下:

<?php
    //  使用预处理操作数据库
    $dbServer = "localhost:3306";
    $dbUser = "root";
    $dbPass = "";
    $dbName = "test";

    //  创建连接
    $conn = new mysqli($dbServer, $dbUser, $dbPass, $dbName);
    if ($conn->connect_error)
        die("连接失败:" . $conn->connect_error);
    else
        echo "连接成功!<br>";

    //  创建表
    $sql = "CREATE TABLE test (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        firstname VARCHAR(30) NOT NULL,
        lastname VARCHAR(30) NOT NULL,
        age int(8) UNSIGNED NOT NULL,
        email VARCHAR(50)
        )";

    if ($conn->query($sql) == TRUE)
        echo "数据表创建成功。<br>";
    else
        echo "数据表创建失败:" . $conn->error . "<br>";

    //  创建预处理对象
    $sql = "INSERT INTO test (firstname, lastname, age, email) VALUES (?, ?, ?, ?)";
    $info = array(1 => array('firstname'=>'kobe', 'lastname'=>'bryant', 'age'=>30, 'email'=>"kobe@qq.com"),
            2 => array('firstname'=>'yao', 'lastname'=>'ming', 'age'=>20, 'email'=>"yao@qq.com"));
    $stmt = $conn->prepare($sql) or die($conn->error);
    foreach ($info as $num => $value) {
        //  参数绑定:   ssis代表,第一个、第二个、第三个参数是string类型,第四个参数是int类型
        $stmt->bind_param('ssis', $value['firstname'], $value['lastname'], $value['age'], $value['email']);
        if (!$stmt->execute())
            die("插入失败:" . $conn->error . "<br>");
    }
    echo "插入成功<br>";
    $stmt->close();

    $sql = "SELECT * FROM test";
    $result = $conn->query($sql);
    if ($result->num_rows > 0){
        //  输出每行数据
        echo "查询结果 : <br>";
        while($row = $result->fetch_assoc()){
            echo "id: " . $row["id"] . " ; firstname: " . $row["firstname"] . " ; lastname : "
            . $row["lastname"] . " ; age : " . $row["age"] . " ; email : " . $row["email"] . "<br>";
        }
    }
    else
        echo "0个结果";
    //  关闭连接
    $conn->close();
?>

运行结果如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值