PHP mysqli 預處理

創建數據庫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'=>"[email protected]"),
            2 => array('firstname'=>'yao', 'lastname'=>'ming', 'age'=>20, 'email'=>"[email protected]"));
    $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();
?>

運行結果如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章