php 通過mysqli 操作數據庫mysql


php mysqli 操作數據庫

連接數據庫

在php5.3版本之后,想要連接數據庫有兩種方案,一種是通過mysqli,另外外一種是通過pdo。本文主要說的是如果通過mysqli面向對象的寫法操作數據庫。

在連接數據庫之前,需要先通過變量存儲好數據庫的基本連接信息。

$servername = "localhost"; // 地址
$username = "root"; // 用戶名
$password = ""; // 密碼

然后可以將mysqli 實例化創建一個對象。並且將相關的參數傳入。

$m = new mysqli($servername,$username,$password);

然后可以來判斷一下是否出現了錯誤。

// 檢測連接是否成功
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

當然,連接之后需要將連接的數據庫關閉。

$conn->close();

完整的demo如下:

<?php 
// php 連接Mysql
// 通過mysqli  

// 采用面向對象的寫法來完成數據庫的連接
// 設置基礎數據庫信息

$servername = "localhost";
$username = "root";
$password = "";

// 創建連接
$conn = new mysqli($servername,$username,$password);

// 檢測連接是否成功
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

// 否則連接成功
echo "連接成功!";
// 連接之后,還需要將連接關閉
$conn->close();
 ?>

通過mysqli 創建數據庫

通過mysqli創建數據庫,首先我們需要保證數據庫的成功連接。

$servername = "localhost";
$username = "root";
$password = "";

// 創建連接
$conn = new mysqli($servername,$username,$password);    
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

接下來通過變量保存好sql語句。

// 設置sql語句
$sql = "create database stu_01  default character set = 'utf8' ";

連接好數據庫之后,我們需要發送sql語句並且檢驗是否數據庫創建成功:

// 發送sql語句 並且驗證是否創建成功
if($conn->query($sql) === TRUE){
    echo "數據庫創建成功.";
}else {
    echo "數據庫創建失敗 ,錯誤信息為:" . $conn->error; // 如果失敗輸出錯誤信息
}

當然,最后不要忘記關閉數據庫。

// 關閉數據庫
$conn->close();

需要注意的是,如果你使用其他端口(默認為3306),為數據庫參數添加空字符串,如: new mysqli("localhost", "username", "password", "", port)

完整demo如下:

<?php 

$servername = "localhost";
$username = "root";
$password = "";

// 創建連接
$conn = new mysqli($servername,$username,$password);    
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

// 設置sql語句
$sql = "create database stu_01  default character set = 'utf8' ";

// 發送sql語句 並且驗證是否創建成功
if($conn->query($sql) === TRUE){
    echo "數據庫創建成功.";
}else {
    echo "數據庫創建失敗 ,錯誤信息為:" . $conn->error; // 如果失敗輸出錯誤信息
}

// 關閉數據庫
$conn->close();
?>

通過mysqi 創建數據表

通過mysqli創建數據表首先我們先來完成基本的數據庫連接操作,需要注意的是,因為我們是在數據庫中創建一個數據表,所以
需要在額外的配置一下數據庫的信息:

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01"; // 要操作的數據庫名
// 創建連接 
$conn = new mysqli($servername,$username,$password,$dbname); // 第四個參數
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

接下來需要設定好創建數據表的sql語句。

create table stu_info(
    id int(6) unsigned auto_increment primary key,
    firstname varchar(30) not null,
    lastname varchar(30) not null,
    email varchar(50),
    reg_date timestamp
    )

關於sql 的數據類型,可以訪問 :https://www.runoob.com/sql/sql-datatypes.html。

上述sql的一些解釋:

NOT NULL - 每一行都必須含有值(不能為空),null 值是不允許的。
DEFAULT value - 設置默認值
UNSIGNED - 使用無符號數值類型,0 及正數
AUTO INCREMENT - 設置 MySQL 字段的值在新增記錄時每次自動增長 1
PRIMARY KEY - 設置數據表中每條記錄的唯一標識。 通常列的 PRIMARY KEY 設置為 ID 數值,與 AUTO_INCREMENT 一起使用。

每個表都應該有一個主鍵(本列為 "id" 列),主鍵必須包含唯一的值。

為了執行sql,可以將上面的sql語句存儲到一個變量當中:


// 使用sql 創建數據表
$sql = "create table stu_info(
    id int(6) unsigned auto_increment primary key,
    firstname varchar(30) not null,
    lastname varchar(30) not null,
    email varchar(50),
    reg_date timestamp
)";

設置完了sql語句,可以直接通過query方法發送sql語句,並且判斷是否執行成功。

if($conn->query($sql) === TRUE){
    echo "數據表創建成功。";
}else {
    echo "數據表創建失敗,錯誤信息:" . $conn->error;
}

// 關閉數據庫連接
$conn->close();

完整的demo如下:

<?php 

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01";
// 創建連接
$conn = new mysqli($servername,$username,$password,$dbname);    
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}



// 使用sql 創建數據表
$sql = "create table stu_info(
    id int(6) UNSIGNED auto_increment primary key,
    firstname varchar(30) not null,
    lastname varchar(30) not null,
    email varchar(50),
    reg_date timestamp
)";

if($conn->query($sql) === TRUE){
    echo "數據表創建成功。";
}else {
    echo "數據表創建失敗,錯誤信息:" . $conn->error;
}

// 關閉數據庫連接
$conn->close();

?>

通過mysqli向數據表中插入信息

首先,連接數據庫並且確定數據庫連接無誤。

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_01";
// 創建連接
$conn = new mysqli($servername,$username,$password,$dbname);    
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

接下來設置sql語句:

// 設置插入數據的sql語句 
$sql = "insert into stu_info(firstname,lastname,email) values('張三','張小三','zhangsan@qq.com')";

將設置好的sql語句發送:

// 發送sql 語句 
if($conn->query($sql) === TRUE){
    echo "新記錄添加成功!";
}else {
    echo "新記錄添加失敗,錯誤信息:" . $conn->error;
}

// 關閉連接
$conn->close();

完整的demo如下:

<?php 
header("Content-type:text/html;Charset=utf-8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";
// 創建連接
$conn = new mysqli($servername,$username,$password,$dbname);    
if($conn->connect_error){
    die("連接失敗,錯誤:" . $conn->connect_error);
}

// 設置插入數據的sql語句 
$sql = "insert into stu_info(firstname,lastname,email) values('張三','張小三','zhangsan@qq.com')";


// 發送sql 語句 
if($conn->query($sql) === TRUE){
    echo "新記錄添加成功!";
}else {
    echo "新記錄添加失敗,錯誤信息:" . $conn->error;
}

// 關閉連接
$conn->close();
?>

如果存儲數據的時候出現亂碼,那么可以使用下面的代碼來解決:

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題

完整demo如下:

<?php

header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";

$conn = new mysqli($servername,$username,$password,$dbname);

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題

if($conn->connect_error){

    echo "連接失敗,錯誤信息:" . $conn->connect_error;
}

// 設置sql語句
$sql = "insert into stu_info(firstname,lastname,email) values('李四','李小思','lisi@qq.com')";

// 發送sql
if($conn->query($sql) === TRUE) {
    echo "新紀錄添加成功.";
}else {
    echo "新紀錄添加失敗,錯誤信息:" . $conn->connect_error;
}

// 關閉
$conn->close();

上面我們向數據表中插入了一條信息,下面我們來嘗試一次性向數據庫中插入多條信息:

完整demo如下:

<?php

// 數據庫連接基本信息
header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";

$conn = new mysqli($servername,$username,$password,$dbname);

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題
// 檢查鏈接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
} 
// 下面開始插入多條數據  

$sql = "insert into stu_info(firstname,lastname,email) values('張三豐','張君寶','sanfeng@qq.com');";
// 使用.= 的形式進行sql語句連接
$sql .= "insert into stu_info(firstname,lastname,email) values('東方不敗','東方拜拜','dongfang@qq.com');";

// 發送sql
if($conn->multi_query($sql) === TRUE) {
    echo "數據添加成功!";
}else{
    echo "數據添加失敗,錯誤信息如下: " . $conn->connect_error;
}

// 關閉
$conn->close();

在上面的代碼中我們使用.=的形式進行sql語句拼接,從而實現一次性插入多條數據。

請注意,每個SQL語句必須用分號隔開。
在上面的代碼中,我們將query方法換成了multi_query()方法,可以順利的實現一次性插入多條數據。

通過mysqli 讀取數據

上面我們通過mysqli插入了數據,下面我們再來學習如何將數據讀取出來:

如果需要查詢全部數據:

<?php

// 數據庫連接基本信息
header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";

$conn = new mysqli($servername,$username,$password,$dbname);

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題
// 檢查鏈接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
} 


// 設置sql 語句,查詢全部數據 
$sql = "select * from stu_info";

// 發送sql語句,獲得查詢結果
$result = $conn->query($sql);

// 如果查詢的結果>0表示查詢成功,那么就可以將數據輸出 
// 函數 num_rows() 判斷返回的數據。

// 如果返回的是多條數據,函數 fetch_assoc() 將結合集放入到關聯數組並循環輸出。
if($result->num_rows > 0) {
    // 輸出數據
    while($row = $result->fetch_assoc()){
        echo "id" . $row['id'] . '- Name:' . $row['firstname'] . " " . $row['lastname'] . '<br>';
    }
}else {
    echo "暫無數據";
}

// 關閉
$conn->close();

在上面的demo中,我們使用的sql語句如下:

select * from stu_info;

上面的語句可以幫助我們查詢全部的數據,我們如果只是想要查詢一部分的數據也可以更改一下:

select id ,firstname,lastname from stu_info;

where語句的應用

我們在查詢數據的時候可以在原本的條件的基礎之上加上where條件,讓查找更加的精確,例如:

select * from stu_info where id > 3;

通過mysqli刪除數據

下面我們來通過mysqli刪除一下數據庫的數據。

<?php


// 數據庫連接基本信息
header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";

$conn = new mysqli($servername,$username,$password,$dbname);

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題
// 檢查鏈接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
} 


// 設置sql
$sql = "delete from stu_info where lastname = '李小思';";

// 發送sql 
if($conn->query($sql) === TRUE) {
    echo "刪除成功";
}else {
    echo "刪除失敗,錯誤信息為:" . $conn->connect_error;
}

$conn->close();

刪除數據時,一定要在delete from stu_info后面加where 條件,否則整個數據表都會被清空。

通過mysqli 更改數據

最后再來說一下如何通過mysqli 更改mysql當中的數據.

完整demo如下:

<?php

// 數據庫連接基本信息
header("Content-type:text/html;Charset=utf8");

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "stu_02";

$conn = new mysqli($servername,$username,$password,$dbname);

mysqli_set_charset($conn,'utf8'); // 解決亂碼問題
// 檢查鏈接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}

// 設置sql語句 
$sql = "update stu_info set firstname='張小三' where id = 3";

// 發送sql語句 
if($conn->query($sql) === TRUE) {
    echo "修改成功";
}else {
    echo "修改失敗,錯誤信息:" . $conn->connect_error;
}

// 關閉
$conn->close();

常用sql語句總結

在上面的代碼中,我們嘗試了通過mysqli對mysql數據進行的增刪改查操作,其中較為核心的是,sql語句的使用。
下面我們來說一下常用的sql語句語法:

創建數據庫

create database 數據庫名 default character set = 'utf8'; 

創建數據表

create table 數據表名 (
    -- 下面是表中的一些字段
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    firstname VARCHAR(30) NOT NULL,
    lastname VARCHAR(30) NOT NULL,
    email VARCHAR(50),
    reg_date TIMESTAMP
)

插入數據

insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)

讀取數據

select  column_name(s) from table_name

如果傳入一個*,則表示搜索所有的數據:

select * from table_name

也可以在后面加入指定條件

select * from table_name where 條件

修改

update table_name
set column1=value, column2=value2,...
where some_column=some_value

刪除數據

delete from table_name
where some_column = some_value


免責聲明!

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



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