- 環境搭建
啟用mysql擴展庫,在php.ini文件中去配置mysql擴展庫
extension=php_mysql.dll
- 查詢數據庫
1、建庫建表
//建庫test
create database test;
//用庫test
use test;
//建表user1
create table user1(
id int primary key auto_increment,
name varchar(32) not null,
password varchar(64) not null,
age tinyint unsigned not null,
birthday date not null
);
//增加數據
insert into user1 (name,password,age,birthday) values ('lm',md5('lm'),25,'1991-01-02');
insert into user1 (name,password,age,birthday) values ('lxz',md5('lxz'),25,'1991-02-03');
insert into user1 (name,password,age,birthday) values ('wy',md5('wy'),25,'1991-03-04');
2、查詢數據庫
1 <?php 2 //連接數據庫 3 $conn=mysql_connect('localhost','root','root'); 4 //如果連接失敗,報錯 5 if(!$conn){ 6 die("連接數據庫失敗".mysql_error()); 7 } 8 //選擇數據庫 9 mysql_select_db('test'); 10 //設置操作編碼 11 mysql_query('set names utf8',$conn); 12 //sql語句,實現查詢操作 13 $sql="select * from user1"; 14 //執行sql語句 15 $res=mysql_query($sql,$conn); 16 //對結果處理 17 while($row=mysql_fetch_row($res)){ 18 echo $row[0]."--".$row[1]."--".$row[2]."--".$row[3]."<br/>"; 19 //var_dump($row); 20 } 21 //釋放資源,關閉數據庫 22 mysql_free_result($res); 23 mysql_close($conn); 24 ?>
結果如下:
問題:查詢不到第一行?
3、下面介紹四個結果處理函數的區別
mysql_fetch_row($res) 返回索引數組,如下:
mysql_fetch_assoc($res) 返回關聯數組,如下:
mysql_fetch_array($res) 返回索引數組+關聯數組,如下:
mysql_fetch_object($res) 返回對象,如下:
- 增刪改數據庫
1 <?php 2 //對數據庫增刪改操作,dml語句(insert,delete,upgate) 3 //連接數據庫 4 $conn=mysql_connect('localhost','root','root'); 5 //如果連接失敗,報錯 6 if(!$conn){ 7 die("連接數據庫失敗".mysql_error()); 8 } 9 //選擇數據庫 10 mysql_select_db('test'); 11 //設置字符格式 12 mysql_query('set names utf8',$conn); 13 //sql語句,實現增刪改操作 14 $sql="insert into user1 (name,password,age,birthday) values('skl',md5('skl'),25,'1991-04-05')"; 15 //$sql="delete from user1 where name='skl'"; 16 //$sql="update user1 set age=18 where name='skl'"; 17 //執行sql語句 18 $res=mysql_query($sql,$conn); 19 //dml語句執行后返回結果為布爾型 20 if(!$res){ 21 echo "操作失敗".mysql_error(); 22 } 23 if(mysql_affected_rows($conn)>0){ 24 echo "操作成功"; 25 }else{ 26 echo "沒有影響到行數"; 27 } 28 //關閉數據庫 29 mysql_close($conn); 30 ?>
- 把對數據庫的操作封裝成類
mysqlTool.class.php
1 <?php 2 class MysqlTool{ 3 private $host="localhost"; 4 private $userName="root"; 5 private $pwd="root"; 6 private $dbName="test"; 7 private $conn; 8 //連接數據庫函數,構造函數(與類同名),實例化后自動調用 9 public function MysqlTool(){ 10 $this->conn=mysql_connect($this->host,$this->userName,$this->pwd); 11 if(!$this->conn){ 12 die("連接數據庫失敗".mysql_error()); 13 } 14 mysql_select_db($this->dbName,$this->conn); 15 mysql_query("set names utf8",$this->conn); 16 } 17 //dql語句,完成select 18 public function executeDql($sql){ 19 $res=mysql_query($sql,$this->conn) or die("操作失敗".mysql_error()); 20 return $res; 21 } 22 //dml語句,完成insert,delete,update 23 public function executeDml($sql){ 24 $res=mysql_query($sql,$this->conn); 25 if(!$res){ 26 return 0;//0表示操作失敗 27 }else{ 28 if(mysql_affected_rows($this->conn)>0){ 29 return 1;//1表示操作成功 30 }else{ 31 return 2;//2表示沒有行數影響 32 } 33 } 34 } 35 //關閉數據庫 36 public function mysqlClo(){ 37 mysql_close($this->conn); 38 } 39 } 40 ?>
實例化類完成查詢數據庫操作:
1 <?php 2 //引入類文件 3 require_once "mysqlTool.class.php"; 4 //對類實例化 5 $mysqlTool=new MysqlTool(); 6 //查詢數據庫 7 $sql="select * from user1"; 8 $res=$mysqlTool->executeDql($sql); 9 while($row=mysql_fetch_row($res)){ 10 echo $row[0]."--".$row[1]."--".$row[2]."--".$row[3]."<br/>"; 11 } 12 mysql_free_result($res); 13 $mysqlTool->mysqlClo(); 14 ?>
實例化類完成增刪改數據庫操作:
1 <?php 2 //引入類文件 3 require_once "mysqlTool.class.php"; 4 //對類實例化 5 $mysqlTool=new MysqlTool(); 6 //增刪改數據庫 7 //$sql="insert into user1 (name,password,age,birthday) values ('skl',md5('skl'),25,'1991-04-05')"; 8 //$sql="delete from user1 where name='skl'"; 9 $sql="update user1 set age=18 where name='skl'"; 10 $res=$mysqlTool->executeDml($sql); 11 if($res==0){ 12 echo "操作失敗"; 13 }else if($res==1){ 14 echo "操作成功"; 15 }else if($res==2){ 16 echo "沒有行數影響"; 17 } 18 $mysqlTool->mysqlClo(); 19 ?>