PHP串連和操作MySQL資料庫基礎教程,mysql基礎教程_PHP教程

來源:互聯網
上載者:User

PHP串連和操作MySQL資料庫基礎教程,mysql基礎教程


從這裡開始

我的部落格,後台資料庫是什嗎?沒錯,就是MySQL,伺服器端使用的指令碼就是PHP,整個架構使用的是WordPress。PHP和MySQL就像夫妻一樣,總是在一起幹活。現在這裡,就集合PHP,總結一下MySQL的實際使用,也算作是MySQL開發的入門。關於PHP與MySQL的合作,不外乎以下三種方法:

1.mysql擴充;但是目前已經不推薦使用;

2.mysqli擴充;同時提供物件導向風格和面向過程的風格;要求MySQL版本是4.1及以上的;

3.PDO擴充為PHP訪問資料庫定義了一種輕量級的一致介面;PDO_MYSQL是對其的具體實現。這裡暫時只關心開發。由於mysql擴充已經不推薦使用了,我也會與時俱進,不做總結;而mysqli和PDO方式用的比較多,所以這篇將會總結如何使用mysqli擴充來串連資料庫伺服器,如何查詢和擷取資料,以及如何執行其它重要任務。下一篇博文將會總結PDO的相關內容。

使用mysqli擴充

先看以下測試資料庫db_test中的測試資料:

複製代碼 代碼如下:
mysql> select * from tb_test;
+----+-----------+----------+------------+------------+
| id | firstname | lastname | email | phone |
+----+-----------+----------+------------+------------+
| 1 | Young | Jelly | 123@qq.com | 1384532120 |
| 3 | Fang | Jone | 456@qq.com | 1385138913 |
| 4 | Yuan | Su | 789@qq.com | 1385138913 |
+----+-----------+----------+------------+------------+
3 rows in set (0.00 sec)

1.建立和中斷連線

與MySQL資料庫互動時,首先要建立串連,最後要中斷連線;這包括與伺服器串連並選擇一個資料庫,以及最後關閉串連,釋放資源。選擇使用物件導向介面與MySQL伺服器互動,首先需要通過其建構函式執行個體化mysqli類。

複製代碼 代碼如下:
<?php
// 執行個體化mysqli類
$mysqliConn = new mysqli();
// 串連伺服器,並選擇一個資料庫
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
printf("MySQL error number:%d", $mysqliConn->errno);
// 或者
// $mysqliConn->connect("http://127.0.0.1", 'root', 'root');
// $mysqliConn->select_db('db_test');

// 與資料庫互動

// 關閉串連
$mysqliConn->close();
?>

一旦成功的選擇了資料庫,然後就可以對這個資料庫執行資料庫查詢了。一旦指令碼執行完畢,所有開啟的資料庫連接都會自動關閉,並釋放資源。不過,有可能一個頁面在執行期間需要多個資料庫連接,各個串連都應當適當的加以關閉。即使只使用一個串連,也應該在指令碼的最後將其關閉,這是一種很好的實踐方法。在任何情況下,都由close()負責關閉串連。

2.處理串連錯誤

當然,如果無法串連MySQL資料庫,那麼不大可能在這個頁面繼續完成預期的工作了。因此,一定要注意監視串連錯誤並相應地做出反應。mysqli擴充包包含很多可以用來捕獲錯誤訊息的特性,另外也可以使用異常來做到這一點。例如,可以使用mysqli_connect_errno()和mysqli_connect_error()方法診斷並顯示一個MySQL串連錯誤的有關資訊。

關於mysqli的具體資訊可以在這裡查看:http://php.net/manual/zh/book.mysqli.php

與資料庫互動

絕大多數查詢都與建立、擷取、更新和刪除任務有關,這些任務統稱為CRUD。這裡就開始總結CRUD相關的內容。

1.向資料庫發送查詢

方法query()負責將query發送給資料庫。它的定義如下:
複製代碼 代碼如下:
mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

選擇性參數resultmode可以用於修改這個方法的行為,它接受兩個可取值。這篇文章總結了二者之間的區別。http://www.bkjia.com/article/55792.htm;下面是一個簡單的使用例子:

複製代碼 代碼如下:
<?php
// 執行個體化mysqli類
$mysqliConn = new mysqli();

// 串連伺服器,並選擇一個資料庫
// 錯誤的密碼
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
if ($mysqliConn->connect_error)
{
printf("Unable to connect to the database:%s", $mysqliConn->connect_error);
exit();
}

// 與資料庫互動
$query = 'select firstname, lastname, email from tb_test;';

// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 迭代處理結果集
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s's email:%s
", $firstname, $lastname, $email);
}

// 關閉串連
$mysqliConn->close();
?>

2.插入、更新和刪除資料

插入、更新和刪除使用的是insert、update和delete查詢完成的,其做法實際上與select查詢相同。範例程式碼如下:

複製代碼 代碼如下:
<?php
// 執行個體化mysqli類
$mysqliConn = new mysqli();

// 串連伺服器,並選擇一個資料庫
// 錯誤的密碼
$mysqliConn->connect('127.0.0.1', 'root', 'root', 'db_test');
if ($mysqliConn->connect_error)
{
printf("Unable to connect to the database:%s", $mysqliConn->connect_error);
exit();
}

// 與資料庫互動
$query = 'select firstname, lastname, email from tb_test;';
// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 迭代處理結果集
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s's email:%s
", $firstname, $lastname, $email);
}

$query = "delete from tb_test where firstname = 'Yuan';";
$result = $mysqliConn->query($query);

// 告訴使用者影響了多少行
printf("%d row(s) have been deleted.
", $mysqliConn->affected_rows);
// 重新查詢結果集
$query = 'select firstname, lastname, email from tb_test;';

// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 迭代處理結果集
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s's email:%s
", $firstname, $lastname, $email);
}
// 關閉串連
$mysqliConn->close();
?>

3.釋放查詢記憶體

有時可能會擷取一個特別龐大的結果集,此時一旦完成處理,很有必要釋放該結果集所請求的記憶體。free()方法可以為我們完成這個任務。例如:
複製代碼 代碼如下:
// 與資料庫互動
$query = 'select firstname, lastname, email from tb_test;';

// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 迭代處理結果集
while (list($firstname, $lastname, $email) = $result->fetch_row())
{
printf("%s %s's email:%s
", $firstname, $lastname, $email);
}
$result->free();

4.解析查詢結果

一旦執行了查詢並準備好結果集,下面就可以解析擷取到的結果行了。你可以使用多個方法來擷取各行中的欄位,具體選擇哪一個方法主要取決於個人喜好,因為只是引用欄位的方法有所不同。

(1)將結果放到對象中

使用fetch_object()方法來完成。fetch_object()方法通常在一個迴圈中調用,每次調用都使得返回結果集中的下一行被填入一個對象,然後可以按照PHP典型的對象訪問文法來訪問這個對象。例如:
複製代碼 代碼如下:
// 與資料庫互動
$query = 'select firstname, lastname, email from tb_test;';

// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 迭代處理結果集
while ($row = $result->fetch_object())
{
$firstname = $row->firstname;
$lastname = $row->lastname;
$email = $row->email;
}
$result->free();

(2)使用索引數組和關聯陣列擷取結果

mysqli擴充包還允許通過fetch_array()方法和fetch_row()方法分別使用關聯陣列和索引數組來管理結果集。fetch_array()方法實際上能夠將結果集的各行擷取為一個關聯陣列、一個數字索引數組,或者同時包括二者,可以說,fetch_row()是fetch_array的一個子集。預設地,fetch_array()會同時擷取關聯陣列和索引數組,可以在fetch_array中傳入參數來修改這個預設行為。

MYSQLI_ASSOC,將行作為一個關聯陣列返回,鍵由欄位名表示,值由欄位內容表示;
MYSQLI_NUM,將行作為一個數字索引數組返回,其元素順序由查詢中指定的欄位名順序決定;
MYSQLI_BOTH,就是預設的選項。

確定所選擇的行和受影響的行

通常希望能夠確定select查詢返回的行數,或者受insert、update或delete影響的行數。

(1)確定返回的行數

如果希望瞭解select查詢語句返回了多少行,num_rows屬性很有用。例如:
複製代碼 代碼如下:
// 與資料庫互動
$query = 'select firstname, lastname, email from tb_test;';

// 發送查詢給MySQL
$result = $mysqliConn->query($query);

// 擷取行數
$result->num_rows;

記住,num_rows只在確定select查詢所擷取的行數時有用,如果要獲得受insert、update或delete影響的行數,就要使用下面總結的affected_rows屬性。

(2)確定受影響的行數

affected_rows屬性用來擷取受insert、update或delete影響的行數。程式碼範例見上面的代碼。

執行資料庫事務

有3個新方法增強了PHP執行MySQL事務的功能,分別為:

1.autocommit函數,啟用自動認可模式;

autocommit()函數控制MySQL自動認可模式的行為,由傳入的參數決定啟動還是禁用自動認可;傳入TRUE,則啟動自動認可,傳入false則禁用自動認可。無論啟用還是禁用,成功時都將返回TRUE,失敗時返回FALSE。

2.commit函數,提交事務;將當前事務提交給資料庫,成功時返回TRUE,否則返回FALSE。

3.rollback函數,復原當前事務,成功時返回TRUE,否則返回FALSE。

關於事務,我後面還要繼續總結,這裡就簡要的總結了一下這三個API。

不會結束

這隻是MySQL學習的開始,不會結束。再接再勵。


PHP操作mysql資料庫的步驟

$conn=mysql_pconnect("localhost","root","123456");//開啟串連
mysql_select_db("資料庫名",$conn);//串連到指定的資料庫
mysql_query("set names utf8");//設定字元編碼
$sql="";
$R=mysql_query($sql);//執行SQL語句返回結果集
while($v=mysql_fetch_array($R)){
echo "欄位名".$v['title'];
}
 

php怎串連Mysql資料庫問題

$hostname = "localhost";//主機地址,一般不需要改
$database = "zx_title";//資料庫表名
$username = "root";//使用者名稱,,預設一般為root
$password = "123";//mysql資料庫的密碼
$conn= mysql_pconnect($hostname, $username, $password) or trigger_error(mysql_error(),E_USER_ERROR);
?>
 

http://www.bkjia.com/PHPjc/887352.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/887352.htmlTechArticlePHP串連和操作MySQL資料庫基礎教程,mysql基礎教程 從這裡開始 我的部落格,後台資料庫是什嗎?沒錯,就是MySQL,伺服器端使用的指令碼就是P...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.