6PHP 操作 MySQL 數(shù)據(jù)庫

[TOC]

PHP 操作 MySQL 數(shù)據(jù)庫

    1. 連接 MySQL 服務(wù)器,連接數(shù)據(jù)庫
    1. 進(jìn)行數(shù)據(jù)庫的操作(CURD)
    1. 斷開數(shù)據(jù)庫,斷開服務(wù)器

1. 連接數(shù)據(jù)庫

PHP5 以上版本建議使用:

  • MySQLi extension
  • PDO(PHP Data Objects)
    MySQLi 只針對 MySQL 數(shù)據(jù)庫,PDO 應(yīng)用 12 種不同數(shù)據(jù)庫中。
    MySQLi 使用面向?qū)ο螅?/strong>
<?php
new mysqli(hostname,username,password,dbname);
/***
hostname: 主機(jī)名,代表當(dāng)前連接的是哪一臺服務(wù)器
username: 連接MySQL服務(wù)器所需要的賬號,默認(rèn):root
password: 連接MySQL服務(wù)器所需要的密碼,默認(rèn)為:""
dbname: 連接數(shù)據(jù)庫所需要的 數(shù)據(jù)庫名稱。


*/
<?php
$servername="localhost";
$username="root";
$password="";
$dbname="shopdb";
// 創(chuàng)建連接  1.實例化MySQLi對象
$conn=new mysqli($servername,$username,$password,$dbname);
// 檢測連接
// 2.連接失敗 判斷標(biāo)志
// connect_errno  --錯誤代碼
// connect_error
// if($conn->connect_error){
//     die('連接失?。?.$conn->connect_error);
// }
if($conn->connect_errno){
    // 如果是非0,代表連接失敗
    // 顯示失敗信息
    die($conn->error);
}
// echo '連接成功';
// 3.消除亂碼 --設(shè)置編碼格式  執(zhí)行SQL語句
$conn->query('set names utf8');

// 4. 執(zhí)行操作
$res=$conn->query('select * from `tab_goods`');
var_dump($res);
$conn->close();

?>

MySQLi 使用面向過程:

<?php
$servername="localhost";
$username="root";
$password="";
$dbname="shopdb";

// 創(chuàng)建連接
$conn=mysqli_connect($servername,$username,$password,$dbname);

// 檢測連接
if(!$conn){
    die('連接失敗:'.mysqli_conncet_eroor())
}
echo '連接成功';
?>

PDO 連接數(shù)據(jù)庫


new PDO("mysql:host=$hostname;dbname=$dbname",$username,$password)';
/**
 * arg1: 'mysql:host=MySQL主機(jī)名;dbname=數(shù)據(jù)庫名稱'
 * $username: 數(shù)據(jù)庫的用戶名
 * $password: 數(shù)據(jù)庫的密碼
*/
$dbms='mysql';     //數(shù)據(jù)庫類型
$servername="localhost";
$username="root";
$password="";
$dbname="shopdb";
$dsn="$dbms:host=$servername;dbname=$dbname";

try{
    $conn=new PDO($dsn,$username,$password);
    echo '連接成功';
}catch(PDOException $e){
    echo $e->getMessage();
}

2.執(zhí)行數(shù)據(jù)庫操作

2.1 MySQLi 類庫通過 query 函數(shù)執(zhí)行 SQL 語句做對應(yīng)的數(shù)據(jù)庫操作。

$dbms='mysql';     //數(shù)據(jù)庫類型
$hostname="localhost";
$username="root";
$password="";
$dbname="demodb";
$dsn="$dbms:host=$hostname;dbname=$dbname";
// 創(chuàng)建連接
$mysqli=new mysqli($hostname,$username,$password,$dbname);
// 檢查連接
if($mysqli->connect_error){
    die("連接失敗".$conn->connect_error);
}

// 準(zhǔn)備SQL語句 開始執(zhí)行數(shù)據(jù)庫操作
$sql="SELECT * FROM `tab_goods`";
// 通過query函數(shù)執(zhí)行SQL語句  得到結(jié)果集對象mysqli_result(不直接包含數(shù)據(jù))
$result=$mysqli->query($sql);
// mysqli_result類中的成員屬性
// $current_field:獲取當(dāng)前結(jié)果中指向的字段偏移位置,是一個整數(shù)。
// $field_count:從查詢結(jié)果中獲取列的個數(shù)。
// $lengths:返回一個數(shù)組,保存在結(jié)果集中獲取當(dāng)前行的每一個列的長度。
// $num_rows:返回結(jié)果集中包含記錄的行數(shù)。
//

2.1 獲取數(shù)據(jù)

返回單條記錄

  • 成員方法 fetch_array 以混合數(shù)組的形式返回單條記錄 (索引數(shù)組+關(guān)聯(lián)數(shù)組(key-value))
var_dump($result->fetch_array());
  • 成員方法 fetch_object fetch_assoc 以對象的形式返回單條記錄
var_dump($result->fetch_object());
var_dump($result->fetch_assoc());
  • 成員方法 fetch_row 以索引數(shù)組的形式返回單條記錄
var_dump($result->fetch_row());

返回所有記錄

$data=$result->fetch_all(MYSQLI_ASSOC);//推薦使用
$data=$result->fetch_all(MYSQLI_NUM);
$data=$result->fetch_all(MYSQLI_BOTH);

fetch_all 函數(shù)接受 三種不同的參數(shù) (系統(tǒng)常量)

  • MYSQLI_ASSOC 返回關(guān)聯(lián)數(shù)組--(與 fetch_assoc 函數(shù)返回的類型相同。)
  • MYSQLI_NUM 返回索引數(shù)組--(與 fetch_row 函數(shù)返回的類型相同。)
  • MYSQLI_BOTH 返回混合數(shù)組--(與 fetch_array 函數(shù)返回的類型相同。)

2.1.2 新增/修改/刪除數(shù)據(jù)

通過 query 函數(shù)執(zhí)行后返回的結(jié)果集進(jìn)行判定。false --失敗

$dbms='mysql';     //數(shù)據(jù)庫類型
$hostname="localhost";
$username="root";
$password="";
$dbname="demodb";
$dsn="$dbms:host=$hostname;dbname=$dbname";
// 創(chuàng)建連接
$mysqli=new mysqli($hostname,$username,$password,$dbname);
// 檢查連接
if($mysqli->connect_error){
    die("連接失敗".$conn->connect_error);
}
$sql="insert into `tab_goods` (`name`,`price`,`description`,`count`) values('huskyuncle',2.5,'賤賣賤賣2.5甩賣了',1);";
$sql1=sprintf("insert into `tab_goods` (`name`,`price`,`description`,`count`) values(%s,%s,%s,%s);",'aaa',23,'描述方式的發(fā)順豐',345);
$res=$mysqli->query($sql1);
if($res===TRUE){
    ECHO '新紀(jì)錄插入成功';
}else {
    echo 'error';
}

2.2 PDO 類庫數(shù)據(jù)庫操作。

通過 exec(),query()兩個函數(shù)執(zhí)行數(shù)據(jù)庫操作.

  • exec() 執(zhí)行一條 SQL 語句,返回后影響的行數(shù)。
  • query() 執(zhí)行一條 SQL 語句,返回一個 PDOStatement 對象
// EXEC  適用于增刪改
$dbms='mysql';
$hostname='localhost';
$dbname='demodb';
$username='root';
$password='';
$dsn="$dbms:host=$hostname;dbname=$dbname";


try{
    $conn=new PDO($dsn,$username,$password);
    $sql='delete from `tab_goods` where `id`=13';
    $res=$conn->exec($sql);
    var_dump($res);

}catch(PDOException $e){
    echo $e->getMessage();
}

query() 函數(shù)返回 PDOStatement 對象,PDOStatement 對象提供了一系列的函數(shù),其中有fetchAll(),用來獲取結(jié)果集中的所有數(shù)據(jù),接受常用幾種參數(shù):PDO::FETCH_BOTH(混合數(shù)組),PDO::FETCH_ASSOC(對象),PDO::NUM(索引數(shù)組);

// QUERY  適用于查詢
$dbms='mysql';
$hostname='localhost';
$dbname='demodb';
$username='root';
$password='';
$dsn="$dbms:host=$hostname;dbname=$dbname";


try{
    $conn=new PDO($dsn,$username,$password);
    $sql='select * from `tab_goods`';
    $res=$conn->query($sql);
    $res->fetchAll(PDO::FETCH_ASSOC)
    var_dump($res);

}catch(PDOException $e){
    echo $e->getMessage();
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)目標(biāo) PHP操作MySQL的步驟PHP連接MySQL服務(wù)器選擇當(dāng)前數(shù)據(jù)庫執(zhí)行各種SQL語句從結(jié)果集獲取一行數(shù)據(jù)...
    zphphp閱讀 462評論 0 0
  • pdo類PDO是一個“數(shù)據(jù)庫訪問抽象層”,作用是統(tǒng)一各種數(shù)據(jù)庫的訪問接口,與mysql和mysqli的函數(shù)庫相比,...
    桖辶殤閱讀 979評論 0 0
  • 一、PHP連接mysql服務(wù)器 1、mysqli_connect() ①描述:連接到 MySQL服務(wù)器②語法:my...
    老衲灬閱讀 769評論 0 0
  • PDO概述 以往,PHP對不同的數(shù)據(jù)庫有著不同支持的擴(kuò)展函數(shù),如果在項目中要切換數(shù)據(jù)庫,則要進(jìn)行相當(dāng)于返工重構(gòu)的工...
    LittleTrue閱讀 1,064評論 0 0
  • 情感放不下可能是根本沒有懂得拿起 /多吉久美和毛惠云 最近做了一些朋友的咨詢,感情上奇葩的有趣的無奈的事,當(dāng)事人中...
    毛惠云閱讀 198評論 0 0

友情鏈接更多精彩內(nèi)容