<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### PHP數據庫編程 PHP有三種方式來操作我們的數據庫: 1、mysql擴展庫 2、mysqli擴展庫 3、pdo ### mysql擴展庫和mysql數據庫的區別 下面就來mysql擴展庫來介紹 : 1、mysql數據庫是用來存放數據的 2、mysql數據庫的三層結構示意圖: 所有數據庫基本上都遵循這三種結構 , ![](https://box.kancloud.cn/2016-06-03_5750fd8eca8aa.jpg) 3、mysql擴展庫是一堆函數,是PHP設計者提供給程序員完成對mysql數據庫的各種操作(CRUD) ### 使用PHP的mysql擴展庫完成對數據庫的操作: 1、環境搭建 1.1 啟用mysql擴展庫 在PHP.ini文件中去配置mysql擴展庫 extension=php_mysql.dll? ? ? ? ? ? ? extension=php_mysqli.dll 我們可以通過<?php phpinfo();?> 來查看目前支持哪些庫功能 1.2 創建一張用戶表,供我們使用 ~~~ create table user1( id int primary key auto_increment, name varchar(32) not null, password varchar(64) not null, email varchar(128) not null, age tinyint unsigned not null ) ~~~ ### 插入數據 ? ~~~ insert into user1(name,password,email,age) value('jsh',md5('123456'),'1234567@qq.com',20) ~~~ 這里我們對密碼進行了加密 當我們將用戶名是漢字時,回報錯誤,需要進行設置 ![](https://box.kancloud.cn/2016-06-03_5750fd8ee848d.jpg) ![](https://box.kancloud.cn/2016-06-03_5750fd8f12c67.jpg) ### 下面是具體的例子: ~~~ <?php //mysql 擴展庫曹總mysql數據庫步驟 //1 獲得鏈接,疑問?密碼在哪設置的??? $conn=mysql_connect("192.168.1.110:3306","root",""); if (!$conn){ die("連接失敗".mysql_error()); }else{ echo "連接成功<br/>"; } //2 選擇數據庫 mysql_select_db('test', $conn) or die ('Can\'t use test: ' . mysql_error()); //3 設置操作編碼(可選) //mysql_query("set names utf8"); //4 發送指令 $sql="select *from user1"; $result = mysql_query($sql,$conn) or die("Invalid query: " . mysql_error()); //5 接受返回結果,并處理 while($row= mysql_fetch_row($result)){ //第一種遍歷方法 //echo "--$row[0]--$row[1]--$row[2]--$row[3]--$row[4]<br/>"; //第二種遍歷方法 foreach($row as $key=>$val){ echo "--$val"; } echo "<br/>下一行:<br/>"; } //6 釋放資源,關閉連接 //釋放內存,這個必須要,釋放的內存資源 mysql_free_result ($result); //這個可有可無,但是建議有,沒有的話,運行完畢也會關閉! mysql_close($conn); ?> ~~~ 打印內容: ~~~ 連接成功 --1--jsh--e10adc3949ba59abbe56e057f20f883e--1234567@qq.com--20 下一行: --2--??--e10adc3949ba59abbe56e057f20f883e--1234567@qq.com--20 下一行: ~~~ ![](https://box.kancloud.cn/2016-06-03_5750fd8f2c551.jpg) ### 細節: 1、$reslust 使用完畢,一定要進行釋放 2、 mysql_close()如果沒有的話,系統也會自動關閉 3、 從$reslust 獲取行數據的時候,處理函數mysql_fetch_row($reslust)返回索引數組,還有三個方法 (1)?mysql_fetch_assoc() 返回一個關聯數組: 是按照表單元素名排序?? ~~~ while($row= mysql_fetch_assoc($result)){ echo $row["id"]." ".$row["name"]." ".$row["password"]." ".$row["email"]." ".$row["age"]; echo "<br/>下一行:<br/>"; } ~~~ 結果如下: 1 jsh e10adc3949ba59abbe56e057f20f883e 1234567@qq.com 20 下一行: 2 ?? e10adc3949ba59abbe56e057f20f883e 1234567@qq.com 20 下一行: (2)mysql_fetch_array($result) 返回關聯數組或者索引數組。這個要比上面2個都慢,一般不建議使用 ~~~ while($row= mysql_fetch_array($result)){ var_dump($row); echo "<br/>下一行:<br/>"; } ~~~ 結果如下: ~~~ array(10) { [0]=> string(1) "1" ["id"]=> string(1) "1" [1]=> string(3) "jsh" ["name"]=> string(3) "jsh" [2]=> string(32) "e10adc3949ba59abbe56e057f20f883e" ["password"]=> string(32) "e10adc3949ba59abbe56e057f20f883e" [3]=> string(14) "1234567@qq.com" ["email"]=> string(14) "1234567@qq.com" [4]=> string(2) "20" ["age"]=> string(2) "20" } 下一行: array(10) { [0]=> string(1) "2" ["id"]=> string(1) "2" [1]=> string(2) "??" ["name"]=> string(2) "??" [2]=> string(32) "e10adc3949ba59abbe56e057f20f883e" ["password"]=> string(32) "e10adc3949ba59abbe56e057f20f883e" [3]=> string(14) "1234567@qq.com" ["email"]=> string(14) "1234567@qq.com" [4]=> string(2) "20" ["age"]=> string(2) "20" } ~~~ (3)mysql_fetch_object($result) 把一行數據,當作一個對象返回。 ~~~ while($row= mysql_fetch_object($result)){ echo $row->id." ".$row->name; echo "<br/>下一行:<br/>"; } ~~~ 返回結果和第一種一樣,只是取值方法不同。 總結:4種方法,應根據具體情況進行選擇,各有利弊吧!? ### 對數據庫操作 增刪改查 : ~~~ <?php //1 獲得鏈接鏈接 $conn=mysql_connect("192.168.1.110:3306","root",""); if (!$conn){ die("連接失敗".mysql_error()); }else{ echo "連接成功<br/>"; } //2 選擇數據庫 mysql_select_db('test', $conn) or die ('Can\'t use test: ' . mysql_error()); //3 增加記錄 // $sql="insert into user1 (name,password,email,age) values ('peipei',md5('woaini'),'peipei@163.com',29)"; //4刪除操作 //$sql="delete from user1 where id=3"; // 5 更新 $sql="update user1 set age=50 where id=2"; //如果是 dml操作,則返回bool $res=mysql_query($sql,$conn); if(!$res){ die( "操作失敗<br/>".mysql_error()); } //看看有幾條數據記錄 if(mysql_affected_rows($conn)>0){ echo "操作成功!<br/>"; }else{ echo "操作失敗!<br/>"; } mysql_close($conn); ?> ~~~ ![](https://box.kancloud.cn/2016-06-03_5750fd8f42994.jpg) 從上面的兩個文件看出,代碼的復用性和可以維護性不高,在PHP變成眾,通常是將對數據庫的操作,封裝成一個工具類,以及對數據庫常用函數使用!看下面的代碼? ~~~ <?php class SqlTool{ private $conn; //鏈接并選擇數據庫 function SqlTool($host,$user,$password,$db){ $this->conn=mysql_connect($host,$user,$password); if(!$this->conn){ die("鏈接數據庫失敗".mysql_error()); } mysql_select_db($db,$this->conn); } //查詢操作 function execute_dql($sql){ $res=mysql_query($sql,$this->conn) or die("查詢失敗".mysql_error()); return $res; } //更新,刪除,添加, //rturn, 0:失敗,1,成功,2:對行數沒有影響 function execute_dml($sql){ $res=mysql_query($sql,$this->conn); if(!$res){ echo "操作失敗".mysql_error(); return 0; }else{ if(mysql_affected_rows($this->conn)>0){ return 1;//成功 }else{ return 2;//沒有任何記錄改變 } } } //下面函數,接受一個查找后的對象,然后把表頭和表的內容打印出來 function show_tables_info($res){ if($res){ //獲得有多少行 // mysql_affected_rows($conn)也可以但是參數是連接的對象; $rows=mysql_num_rows($res); //獲得有多少列 $colums=mysql_num_fields($res); //打印表頭及表內容 echo "<table border=1><tr>"; for($i=0;$i<$colums;$i++){ $field_name=mysql_field_name($res,$i); echo "<th>$field_name</th>"; } echo "</tr>"; while($row=mysql_fetch_row($res)){ echo "<tr>"; for($i=0;$i<$colums;$i++){ echo "<td>$row[$i]</td>"; } echo "</tr>"; } echo"</table>"; /*mysql_fetch_field 返回一個包含字段信息的對象,具體看手冊 while($field_info=mysql_fetch_field($res)){ echo $field_info->name."<br/>"; }*/ } } } //創建對象 //這邊析構函數使用PHP4,這里可以看析構函數介紹 $sqltool=new SqlTool("192.168.1.110:3306","root","","test"); /* //添加對象 $sql="insert into user1 (name,password,email,age) values ('peipei',md5('woaini'),'peipei@163.com',29)"; $res=$sqltool->execute_dml($sql); echo $res."<br/>"; */ //查找 $sql="select * from user1"; $res=$sqltool->execute_dql($sql); /* while($row=mysql_fetch_assoc($res)){ foreach($row as $key=>$val){ echo "[$key]=$val "; } echo "<br/>"; } */ $sqltool->show_tables_info($res); //釋放 mysql_free_result($res); ?> ~~~ 看效果 ![](https://box.kancloud.cn/2016-06-03_5750fd8f698d3.jpg) 補充: 習mysql數據庫,常用[mysql](http://database.51cto.com/art/201009/225564.htm)命令是首先需要掌握的,下面就為您介紹了九種常用mysql命令,希望對您學習常用mysql命令方面能有所幫助。 1 .啟動MYSQL服務?? net start mysql 停止MYSQL服務?? net stop mysql 2 . netstat –na | findstr 3306 查看被監聽的端口 , findstr用于查找后面的在端口是否存在 3 . 在命令行中登陸MYSQL控制臺 , 即使用 MYSQL COMMEND LINE TOOL 語法格式 mysql –user=root –password=123456 db_name 或 mysql –uroot –p123456 db_name 4 . 進入MYSQL命令行工具后 , 使用status; 或\s 查看運行環境信息 5 . 切換連接數據庫的語法 : use new_dbname; 6 . 顯示所有數據庫 : show databases; 7 . 顯示數據庫中的所有表 : show tables; 8 . 顯示某個表創建時的全部信息 : show create table table_name; 9 . 查看表的具體屬性信息及表中各字段的描述 Describe table_name; 縮寫形式 : desc table_name; 1、顯示數據庫 ~~~ show databases; ~~~ 2、選擇數據庫 ~~~ use 數據庫名; ~~~ 3、顯示數據庫中的表 ~~~ show tables; ~~~ 4、顯示數據表的結構? ~~~ describe 表名; ~~~ 5、顯示表中記錄? ~~~ SELECT * FROM 表名 ~~~ 6、建庫 ~~~ create databse 庫名; ~~~ 7、建表 [![復制代碼](https://box.kancloud.cn/2015-10-30_5632e1b8d3b57.gif)]( "復制代碼") ~~~ create table 表名 (字段設定列表); mysql> create table name( -> id int auto_increment not null primary key , -> uname char(8), -> gender char(2), -> birthday date ); Query OK, 0 rows affected (0.03 sec) mysql> show tables; +------------------+ | Tables_in_userdb | +------------------+ | name | +------------------+ 1 row in set (0.00 sec) mysql> describe name; +----------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+---------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | uname | char(8) | YES | | NULL | | | gender | char(2) | YES | | NULL | | | birthday | date | YES | | NULL | | +----------+---------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) 注: auto_increment 自增 primary key 主鍵 ~~~ [![復制代碼](https://box.kancloud.cn/2015-10-30_5632e1b8d3b57.gif)]( "復制代碼") 8、增加記錄 ~~~ insert into name(uname,gender,birthday) values('張三','男','1971-10-01'); ~~~ 9、修改記錄 ~~~ update name set birthday='1971-01-10' where uname='張三'; ~~~ 10、刪除記錄 ~~~ delete from name where uname='張三'; ~~~ 11、刪除表 ~~~ drop table 表名 ~~~ 12、刪除庫 ~~~ drop database 庫名; ~~~ 13、備份數據庫? ~~~ mysqldump -u root -p --opt 數據庫名>備份名; //進入到庫目錄 ~~~ 14、恢復 ~~~ mysql -u root -p 數據庫名<備份名; //恢復時數據庫必須存在,可以為空數據庫 ~~~ 15、數據庫授權  格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼" 例1、增加一個用戶user001密碼為123456,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MySQL,然后鍵入以下命令: ~~~ mysql> grant select,insert,update,delete on *.* to user001@"%" Identified by "123456"; ~~~ 例2、增加一個用戶user002密碼為123456,讓此用戶只可以在localhost上登錄,也可以設置指定IP,并可以對數據庫test進行查詢、插入、修改、刪除的操作 (localhost指本地主機,即MySQL數據庫所在的那臺主機) ?????? //這樣用戶即使用知道user_2的密碼,他也無法從網上直接訪問數據庫,只能通過MYSQL主機來操作test庫。 ?????? //首先用以root用戶連入MySQL,然后鍵入以下命令: ~~~ mysql>grant select,insert,update,delete on test.* to user002@localhost identified by "123456"; ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看