PHP與MySQL的交互(mysqli)


近期在學習PHP,這里總結一下PHP與MySQL的交互。
這里我們使用mysqli進行連接。
mysqli擴展允許我們訪問MySQL 4.1及以上版本提供的功能。
想深入了解mysqli的信息可以訪問下面的網站進行學習:
http://php.net/manual/zh/book.mysqli.php

這里我們根據幾個例子來簡單了解交互方式。

環境:

    wampServer+sublime

創建數據庫

例子:建立名為mydb的數據庫

<?php /* 建立連接 其中第一個參數是服務器地址。 其中第二個參數是用戶名。 其中第三個參數是密碼。 這些參數需要自己查。 */ $con =new mysqli("localhost","root","123456"); //判斷連接是否成功 if (!$con){ //連接失敗輸出錯誤。 die('無法連接: ' . mysql_error()); } //生成SQL語句,創建數據庫mydb $sql = " CREATE DATABASE mydb "; //調用mysqli的query方法 if ($con->query($sql) === TRUE){ echo "創建成功"; }else{ echo "數據庫創建失敗: " . mysql_error(); } //關閉連接 $con->close(); ?>

創建數據表

例子:創建一個名User的數據表

SQL語句為:

CREATE TABLE User (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, password VARCHAR(20) NOT NULL, sex VARCHAR(20) NOT NULL, dob DATE NOT NULL, email VARCHAR(50) NOT NULL);

代碼:

<?php // 創建連接,這里多的參數是數據庫名稱。 $con = new mysqli("localhost","root","123456", "mydb"); // 檢測連接 if ($con->connect_error) { die("連接失敗: " . $con->connect_error); } // 使用 sql 創建數據表 $sql = "CREATE TABLE User ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, password VARCHAR(20) NOT NULL, sex VARCHAR(20) NOT NULL, dob DATE NOT NULL, email VARCHAR(50) NOT NULL );"; //調用mysqli的query方法 if ($con->query($sql)) { echo "Table User created successfully"; } else { echo "創建數據表錯誤: " . $con->error; } //關閉連接 $con->close(); ?> 

數據的插入

我們向數據表里插入如下數據:

‘測試’, ‘12345678’,’man’,’2016-3-3’,’test@example.com’

SQL語句如下:

INSERT INTO User (name,password,sex,dob,email) VALUES ('測試', '12345678','man','2016-3-3','test@example.com');

代碼:

<?php // 創建連接 $con = new mysqli("localhost","root","123456", "mydb"); // 檢測連接 if ($con->connect_error) { die("連接失敗: " . $con->connect_error); } // 使用 sql 插入數據 $sql = "INSERT INTO User (name,password,sex,dob,email) VALUES ('測試', '12345678','man','2016-3-3','test@example.com')"; if ($con->query($sql)) { echo "數據插入成功"; } else { echo "插入錯誤: " . $con->error; } //關閉連接 $con->close(); ?>  

數據的預處理

插入數據時為了提高效率和防止注入使用預處理方式。
使用如下語句:

INSERT INTO User (name,password,sex,dob,email) VALUES (?, ?,?,?,?);

在需要輸入的信息位置用?代替。

這里要用到如下語句:
1)prepare()–>mysqli_stmt mysqli_prepare ( mysqli link,string query )預處理。
2)bind_param()–>將變量綁定到准備好的語句中。
3)execute() –>mysqli_stmt_execute() 執行預處理語句。

例子如下:

<?php
    // 創建連接
    $con = new mysqli("localhost","root","123456", "mydb");
    // 檢測連接
    if ($con->connect_error) {
        die("連接失敗: " . $con->connect_error);
    }
    //sql語句
    $sql ="INSERT INTO User (name,password,sex,dob,email) VALUES (?, ?,?,?,?)";
    // 預處理及綁定
    $stmt = $con->prepare($sql);

    /* bind_param() 設置每個'?'要裝入的值 第一個參數是設置后幾個參數的格式。 s->string, i->integer, d->double 第二個參數開始是上邊需要裝入的值。 */
    $stmt->bind_param("sssss", $name, $password, $sex,$dob ,$email);
    // 設置參數並執行
    $name = "John";
    $password = "111111111111";
    $sex = "man";
    $dob = "2015-2-2";
    $email = "john@example.com";
    // 執行預處理語句
    $stmt->execute();
    echo "新記錄插入成功";
    //關閉預處理
    $stmt->close();
    //關閉連接
    $con->close();
?> 

數據查詢

查詢數據庫中的名字。

<?php // 創建連接 $con = new mysqli("localhost","root","123456", "mydb"); // 檢測連接 if ($con->connect_error) { die("連接失敗: " . $con->connect_error); } //查詢語句 $sql = "SELECT name FROM User"; $result = $con ->query($sql); //輸出數據 if($result->num_rows>0){ while($row =$result->fetch_assoc()){ echo $row["name"]."<br>"; } } $con->close(); ?>      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM