邊記邊學PHP-(十六)PHP使用MySQL擴充庫操作資料庫

來源:互聯網
上載者:User

標籤:資料庫   php   database   mysql   

PHP提供了很多擴充庫,這裡說的是使用MySQL擴充庫,但是這種擴充庫在不久的將來就會被摒棄,因為如果使用MySQL擴充庫編寫的代碼在啟動並執行時候會有warning的提示。我本來想直接寫另一種,但是感覺這是基礎。MySQL擴充庫,一說到庫,自然而然就想到是一堆函數,很多函數組成一個庫,使用擴充庫也就是使用裡面的函數。MySQL擴充庫是完全面向過程的,顯然不符合物件導向的特性,被摒棄也是可以理解的。廢話不多說,直接上重點。

一、PHP使用MySQL擴充庫操作資料庫的此圖是我自己畫的,可能有不準確的地方。可以看到使用MySQL操作資料庫大致經過五步:1、串連MySQL伺服器這裡使用的函數是mysql_connect()函數2、選擇資料庫這裡使用的是mysql_select_db();函數3、執行SQL語句這裡使用mysql_query()函數。所謂的SQL語句就是增刪改查操作。4、關閉結果集這裡使用mysql_free_result();函數,釋放系統資源5、斷開與伺服器的串連這裡使用mysql_close();函數二、細說五步1、串連MySQL伺服器mysql_connect()函數的文法如下:resource mysql_connect([string server[,string username[,string password[,bool new_link[,int client_flags]]]]]);這是最完整的函數參數,但是我們在用的時候就只是用前三個參數就好了。第一個server指的是MySQL伺服器,可以使用預設的localhost。第二個username就是在安裝資料庫的時候自己設定的使用者名稱,我們預設的是root。第三個password就是資料庫的密碼。如果串連成功會返回一個MySQL串連標識,失敗則返回false。比如我串連我自己的資料庫,我的伺服器為localhost,使用者名稱為root,密碼為root。我可以這麼測試
<?php$host = 'localhost';$username = 'root';$password = 'root';if($conn = mysql_connect($host,$username,$password)){echo "串連MySQL伺服器成功";}else{echo "串連失敗";}

2、選擇資料庫bool mysql_select_db(string database_name[,resource link_identifier]);第一個參數database_name是要串連的資料庫名。第二個參數link_identifier是資料庫連接標識,也就是上面串連MySQL伺服器成功後返回的值。如果不寫,預設為上一次開啟的資料庫連接。建議寫。成功返回true,失敗返回false。比如我需要串連我上次建立的那個test資料庫,我可以這麼寫:
<?php$host = 'localhost';$username = 'root';$password = 'root';$database_name = 'test';$conn = mysql_connect($host,$username,$password);if(mysql_select_db($database_name,$conn)){echo "資料庫連接成功";}else{echo "串連失敗";}


3、執行SQL語句所謂SQL語句就是對資料庫進行的增刪改查操作。在使用命令列操作資料庫的時候已經介紹了。函數文法如下:resource mysql_query(string query[,resource link_identifier]);第一個參數就是需要執行的sql語句。第二個參數是mysql_connect返回的串連標識。建議寫。sql語句分為ddl【資料定義語句】 ,dml【 資料動作陳述式,如update,insert,delete】,dql【 select】 ,dtl【資料事務語句 rollback commit】,這裡面最常用的就是dql語句,也就是查詢語句。在執行dql語句成功後返回的是一個“資料指標”,在執行dml語句成功後返回的是true,失敗都返回false。比如我想查詢現在我的表裡有什麼資料,我可以這麼寫。
<span style="font-size:14px;"><?php$host = 'localhost';$username = 'root';$password = 'root';$database_name = 'test';$conn = mysql_connect($host,$username,$password);mysql_select_db($database_name,$conn);$sql = "select * from tb_student;";$query = mysql_query($sql,$conn);while($res = mysql_fetch_assoc($query)){echo $res['id'].'--'.$res['name'].'--'.$res['email'].'--'.$res['address'].'--'.$res['age'].'<br>';}</span>

增刪改不舉例了,就是把SQL語句換了。然後返回的true或false。不用再取結果集。4、關閉結果集mysql_free_result(resource $res);比如上面我用完之後就可以關閉結果集了,mysql_free_result($query);5、斷開與資料庫連接mysql_close(resource $link_identifier);比如上面程式最後我就可以中斷連線了,mysql_close($conn);三、這裡給出綜合案例
<?php     //mysql擴充庫操作資料庫步驟如下     //1.擷取串連     $conn = mysql_connect("localhost","root","root");     if(!$conn){          die("串連失敗".mysql_error);     }     //2.選擇資料庫     mysql_select_db("mr_mysql");     //3.設定作業編碼(建議有)     mysql_query("set names utf8");     //4.發送指令sql (ddl【資料定義語句】 ,dml【 資料動作陳述式,如update,insert,delete】,dql【 select】 ,dtl【資料事務語句 rollback commit】)     $sql = "select * from mr_user;";     $res = mysql_query($sql,$conn);//返回的資料‘指標’不是指到了第一行,而是指到第一行的前一行,也就是第0行。     //var_dump($res);         //5.接收返回的結果,並處理         while($row = mysql_fetch_row($res)){   //mysql_fetch_row()是返回結果集的下一行並賦值給$row          //$row 是一個數組          //第一種取法:$row[i]          echo "<br>";          //echo "$row[0]--$row[1]--$row[2]--$row[3]--$row[4]";          //var_dump($row);          //第二種取法          foreach($row as $key=>$value){               echo "$value--";          }              }     //6.釋放資源     mysql_free_result($res);     mysql_close($conn);  //這句可以不寫,建議寫

四、細節問題       1.使用完$res結果集後,一定要釋放資源
       2.mysql_close()如果沒有的話,系統也會自動關閉
       3.如果mysql_close放在了while前面,那麼不會影響結果,因為執行完mysql_query語句之後,程式已經把資料庫讀到記憶體,再次使用時是從記憶體讀取。但是如果mysql_free_result放在前面,那麼就會出錯。
       4.$row是個數組
       5.$res如果執行的是dql語句返回的是個資源類型,但是如果執行的是dml語句就會返回bool值       6.從$res擷取行資料的時候,除了mysql_fetch_row($res)[返回索引數組]還有三個方法:                mysql_fetch_assoc($res)          --------返回一個關聯陣列                mysql_fetch_array($res)          ---------返回索引數組和關聯陣列,很耗記憶體,建議不要使用                mysql_fetch_object($res)        ---------把一行資料當成一個對象返回

至此使用MySQL擴充庫操作資料庫基本完成,這是後面使用Mysqli擴充庫操作資料庫的基礎,下一篇寫Mysqli擴充庫操作資料庫。











邊記邊學PHP-(十六)PHP使用MySQL擴充庫操作資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.