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

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)前連接的是哪一臺(tái)服務(wù)器
username: 連接MySQL服務(wù)器所需要的賬號(hào),默認(rèn):root
password: 連接MySQL服務(wù)器所需要的密碼,默認(rèn)為:""
dbname: 連接數(shù)據(jù)庫所需要的 數(shù)據(jù)庫名稱拂酣。


*/
<?php
$servername="localhost";
$username="root";
$password="";
$dbname="shopdb";
// 創(chuàng)建連接  1.實(shí)例化MySQLi對象
$conn=new mysqli($servername,$username,$password,$dbname);
// 檢測連接
// 2.連接失敗 判斷標(biāo)志
// connect_errno  --錯(cuò)誤代碼
// 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é)果中指向的字段偏移位置,是一個(gè)整數(shù)背苦。
// $field_count:從查詢結(jié)果中獲取列的個(gè)數(shù)互捌。
// $lengths:返回一個(gè)數(shù)組,保存在結(jié)果集中獲取當(dāng)前行的每一個(gè)列的長度行剂。
// $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()兩個(gè)函數(shù)執(zhí)行數(shù)據(jù)庫操作.

  • exec() 執(zhí)行一條 SQL 語句澈蝙,返回后影響的行數(shù)。
  • query() 執(zhí)行一條 SQL 語句撵幽,返回一個(gè) 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)系作者
  • 序言:七十年代末漏麦,一起剝皮案震驚了整個(gè)濱河市客税,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撕贞,老刑警劉巖更耻,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捏膨,居然都是意外死亡秧均,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門号涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來目胡,“玉大人,你說我怎么就攤上這事链快∮海” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵域蜗,是天一觀的道長巨双。 經(jīng)常有香客問我,道長霉祸,這世上最難降的妖魔是什么筑累? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮丝蹭,結(jié)果婚禮上慢宗,老公的妹妹穿的比我還像新娘。我一直安慰自己奔穿,他們只是感情好镜沽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著巫橄,像睡著了一般淘邻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上湘换,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天宾舅,我揣著相機(jī)與錄音,去河邊找鬼彩倚。 笑死筹我,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的帆离。 我是一名探鬼主播蔬蕊,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼哥谷!你這毒婦竟也來了岸夯?” 一聲冷哼從身側(cè)響起麻献,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猜扮,沒想到半個(gè)月后勉吻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旅赢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年齿桃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煮盼。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡短纵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出僵控,到底是詐尸還是另有隱情香到,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布喉祭,位于F島的核電站养渴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏泛烙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一翘紊、第九天 我趴在偏房一處隱蔽的房頂上張望蔽氨。 院中可真熱鬧,春花似錦帆疟、人聲如沸鹉究。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽自赔。三九已至,卻和暖如春柳琢,著一層夾襖步出監(jiān)牢的瞬間绍妨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工柬脸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留他去,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓倒堕,卻偏偏與公主長得像灾测,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子垦巴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • [TOC] PHP 操作 MySQL 數(shù)據(jù)庫 連接 MySQL 服務(wù)器,連接數(shù)據(jù)庫 進(jìn)行數(shù)據(jù)庫的操作(CURD) ...
    哈士奇大叔閱讀 498評(píng)論 0 3
  • 1.PHP支持哪些數(shù)據(jù)庫? PHP通過安裝相應(yīng)的擴(kuò)展來實(shí)現(xiàn)數(shù)據(jù)庫操作媳搪,現(xiàn)代應(yīng)用程序的設(shè)計(jì)離不開數(shù)據(jù)庫的應(yīng)用铭段,當(dāng)前主...
    蘇宇lovecc閱讀 1,135評(píng)論 0 4
  • PHP支持哪些數(shù)據(jù)庫 PHP通過安裝相應(yīng)的擴(kuò)展來實(shí)現(xiàn)數(shù)據(jù)庫操作,現(xiàn)代應(yīng)用程序的設(shè)計(jì)離不開數(shù)據(jù)庫的應(yīng)用秦爆,當(dāng)前主流的數(shù)...
    敬業(yè)福閱讀 2,092評(píng)論 0 1
  • PHP連接數(shù)據(jù)庫有許多方法: 1稠项、mysqli(面向過程) $conn = mysqli_connect("loc...
    DarlingHH閱讀 401評(píng)論 0 0
  • 在PHP7中已經(jīng)廢除了mysql庫了,則只能使用mysqli及PDO mysqli面向?qū)ο箫L(fēng)格<?php $ser...
    康PHPoracle閱讀 149評(píng)論 0 0