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

[TOC]

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

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

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

PHP5 以上版本建議使用:

  • MySQLi extension
  • PDO(PHP Data Objects)
    MySQLi 只針對 MySQL 數(shù)據(jù)庫祖娘,PDO 應用 12 種不同數(shù)據(jù)庫中塞淹。
    MySQLi 使用面向對象:
<?php
new mysqli(hostname,username,password,dbname);
/***
hostname: 主機名,代表當前連接的是哪一臺服務器
username: 連接MySQL服務器所需要的賬號,默認:root
password: 連接MySQL服務器所需要的密碼薯鼠,默認為:""
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.連接失敗 判斷標志
// connect_errno  --錯誤代碼
// connect_error
// if($conn->connect_error){
//     die('連接失敼案洹:'.$conn->connect_error);
// }
if($conn->connect_errno){
    // 如果是非0荒适,代表連接失敗
    // 顯示失敗信息
    die($conn->error);
}
// echo '連接成功';
// 3.消除亂碼 --設置編碼格式  執(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主機名;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 語句做對應的數(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);
}

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

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

返回單條記錄

  • 成員方法 fetch_array 以混合數(shù)組的形式返回單條記錄 (索引數(shù)組+關聯(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 返回關聯(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í)行后返回的結果集進行判定。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 '新紀錄插入成功';
}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(),用來獲取結果集中的所有數(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();
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末矾睦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炎功,更是在濱河造成了極大的恐慌枚冗,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇损,死亡現(xiàn)場離奇詭異赁温,居然都是意外死亡,警方通過查閱死者的電腦和手機淤齐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門股囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人更啄,你說我怎么就攤上這事稚疹。” “怎么了祭务?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵内狗,是天一觀的道長。 經(jīng)常有香客問我待牵,道長其屏,這世上最難降的妖魔是什么喇勋? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任缨该,我火速辦了婚禮,結果婚禮上川背,老公的妹妹穿的比我還像新娘贰拿。我一直安慰自己,他們只是感情好熄云,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布膨更。 她就那樣靜靜地躺著,像睡著了一般缴允。 火紅的嫁衣襯著肌膚如雪荚守。 梳的紋絲不亂的頭發(fā)上珍德,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天,我揣著相機與錄音矗漾,去河邊找鬼锈候。 笑死,一個胖子當著我的面吹牛敞贡,可吹牛的內容都是我干的泵琳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼誊役,長吁一口氣:“原來是場噩夢啊……” “哼获列!你這毒婦竟也來了?” 一聲冷哼從身側響起蛔垢,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤击孩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鹏漆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溯壶,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年甫男,在試婚紗的時候發(fā)現(xiàn)自己被綠了且改。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡板驳,死狀恐怖又跛,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情若治,我是刑警寧澤慨蓝,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站端幼,受9級特大地震影響礼烈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜婆跑,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一此熬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧滑进,春花似錦犀忱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至节槐,卻和暖如春搀庶,著一層夾襖步出監(jiān)牢的瞬間拐纱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工哥倔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留戳玫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓未斑,卻偏偏與公主長得像咕宿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜡秽,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內容

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