PHP MySQL 簡(jiǎn)介
MySQL 是最流行的開(kāi)源數(shù)據(jù)庫(kù)服務(wù)器。
什么是 MySQL?
MySQL 是一種數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)定義了存儲(chǔ)信息的結(jié)構(gòu)。
在數(shù)據(jù)庫(kù)中,存在著一些表。類似 HTML 表格,數(shù)據(jù)庫(kù)表含有行、列以及單元。
在分類存儲(chǔ)信息時(shí),數(shù)據(jù)庫(kù)非常有用。一個(gè)公司的數(shù)據(jù)庫(kù)可能擁有這些表:"Employees", "Products", "Customers" 以及 "Orders"。
數(shù)據(jù)庫(kù)表
數(shù)據(jù)庫(kù)通常包含一個(gè)或多個(gè)表。每個(gè)表都一個(gè)名稱(比如 "Customers" 或 "Orders")。每個(gè)表包含帶有數(shù)據(jù)的記錄(行)。
下面是一個(gè)名為 "Persons" 的表的例子:
上面的表含有三個(gè)記錄(每個(gè)記錄是一個(gè)人)和四個(gè)列(LastName, FirstName, Address 以及 City)。
查詢
查詢是一種詢問(wèn)或請(qǐng)求。
通過(guò) MySQL,我們可以向數(shù)據(jù)庫(kù)查詢具體的信息,并得到返回的記錄集。
請(qǐng)看下面的查詢:
上面的查詢選取了 Persons 表中 LastName 列的所有數(shù)據(jù),并返回類似這樣的記錄集:
下載 MySQL 數(shù)據(jù)庫(kù)
如果您的 PHP 服務(wù)器沒(méi)有 MySQL 數(shù)據(jù)庫(kù),可以在此下載 MySQL:http://www.mysql.com/downloads/index.html
Facts About MySQL Database
關(guān)于 MySQL 的一點(diǎn)很棒的特性是,可以對(duì)它進(jìn)行縮減,來(lái)支持嵌入的數(shù)據(jù)庫(kù)應(yīng)用程序。也許正因如此,許多人認(rèn)為 MySQL 僅僅能處理中小型的系統(tǒng)。
事實(shí)上,對(duì)于那些支持巨大數(shù)據(jù)和訪問(wèn)量的網(wǎng)站,MySQL 是事實(shí)上的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)(比如 Friendster, Yahoo, Google)。這個(gè)地址提供了使用 MySQL 的公司的概覽:http://www.mysql.com/customers/。
PHP MySQL 連接數(shù)據(jù)庫(kù)
免費(fèi)的 MySQL 數(shù)據(jù)庫(kù)通常是通過(guò) PHP 來(lái)使用的。
連接到一個(gè) MySQL 數(shù)據(jù)庫(kù)
在您能夠訪問(wèn)并處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)之前,您必須創(chuàng)建到達(dá)數(shù)據(jù)庫(kù)的連接。
在 PHP 中,這個(gè)任務(wù)通過(guò) mysql_connect() 函數(shù)完成。
語(yǔ)法
注釋:雖然還存在其他的參數(shù),但上面列出了最重要的參數(shù)。請(qǐng)?jiān)L問(wèn) W3School 提供的 PHP MySQL 參考手冊(cè),獲得更多的細(xì)節(jié)信息。
例子
在下面的例子中,我們?cè)谝粋€(gè)變量中 ($con) 存放了在腳本中供稍后使用的連接。如果連接失敗,將執(zhí)行 "die" 部分:
關(guān)閉連接
腳本一結(jié)束,就會(huì)關(guān)閉連接。如需提前關(guān)閉連接,請(qǐng)使用 mysql_close() 函數(shù)。
PHP MySQL 創(chuàng)建數(shù)據(jù)庫(kù)和表
數(shù)據(jù)庫(kù)存有一個(gè)或多個(gè)表。
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE 語(yǔ)句用于在 MySQL 中創(chuàng)建數(shù)據(jù)庫(kù)。
語(yǔ)法
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。此函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在下面的例子中,我們創(chuàng)建了一個(gè)名為 "my_db" 的數(shù)據(jù)庫(kù):
創(chuàng)建表
CREATE TABLE 用于在 MySQL 中創(chuàng)建數(shù)據(jù)庫(kù)表。
語(yǔ)法
為了執(zhí)行此命令,我必須向 mysql_query() 函數(shù)添加 CREATE TABLE 語(yǔ)句。
例子
下面的例子展示了如何創(chuàng)建一個(gè)名為 "person" 的表,此表有三列。列名是 "FirstName", "LastName" 以及 "Age":
重要事項(xiàng):在創(chuàng)建表之前,必須首先選擇數(shù)據(jù)庫(kù)。通過(guò) mysql_select_db() 函數(shù)選取數(shù)據(jù)庫(kù)。
注釋:當(dāng)您創(chuàng)建 varchar 類型的數(shù)據(jù)庫(kù)字段時(shí),必須規(guī)定該字段的最大長(zhǎng)度,例如:varchar(15)。
MySQL 數(shù)據(jù)類型
主鍵和自動(dòng)遞增字段
每個(gè)表都應(yīng)有一個(gè)主鍵字段。
主鍵用于對(duì)表中的行進(jìn)行唯一標(biāo)識(shí)。每個(gè)主鍵值在表中必須是唯一的。此外,主鍵字段不能為空,這是由于數(shù)據(jù)庫(kù)引擎需要一個(gè)值來(lái)對(duì)記錄進(jìn)行定位。
主鍵字段永遠(yuǎn)要被編入索引。這條規(guī)則沒(méi)有例外。你必須對(duì)主鍵字段進(jìn)行索引,這樣數(shù)據(jù)庫(kù)引擎才能快速定位給予該鍵值的行。
下面的例子把 personID 字段設(shè)置為主鍵字段。主鍵字段通常是 ID 號(hào),且通常使用 AUTO_INCREMENT 設(shè)置。AUTO_INCREMENT 會(huì)在新紀(jì)錄被添加時(shí)逐一增加該字段的值。要確保主鍵字段不為空,我們必須向該字段添加 NOT NULL 設(shè)置。
例子
PHP MySQL Insert Into
INSERT INTO 語(yǔ)句用于向數(shù)據(jù)庫(kù)表中插入新紀(jì)錄。
向數(shù)據(jù)庫(kù)表插入數(shù)據(jù)
INSERT INTO 語(yǔ)句用于向數(shù)據(jù)庫(kù)表添加新紀(jì)錄。
語(yǔ)法
您還可以規(guī)定希望在其中插入數(shù)據(jù)的列:
注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。INSERT INTO 與 insert into 相同。
為了讓 PHP 執(zhí)行該語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在前面的章節(jié),我們創(chuàng)建了一個(gè)名為 "Person" 的表,有三個(gè)列:"Firstname", "Lastname" 以及 "Age"。我們將在本例中使用同樣的表。下面的例子向 "Person" 表添加了兩個(gè)新紀(jì)錄:
把來(lái)自表單的數(shù)據(jù)插入數(shù)據(jù)庫(kù)
現(xiàn)在,我們創(chuàng)建一個(gè) HTML 表單,這個(gè)表單可把新紀(jì)錄插入 "Person" 表。
這是這個(gè) HTML 表單:
當(dāng)用戶點(diǎn)擊上例中 HTML 表單中的提交按鈕時(shí),表單數(shù)據(jù)被發(fā)送到 "insert.php"。"insert.php" 文件連接數(shù)據(jù)庫(kù),并通過(guò) $_POST 變量從表單取回值。然后,mysql_query() 函數(shù)執(zhí)行 INSERT INTO 語(yǔ)句,一條新的記錄會(huì)添加到數(shù)據(jù)庫(kù)表中。
下面是 "insert.php" 頁(yè)面的代碼:
PHP MySQL Select
SELECT 語(yǔ)句用于從數(shù)據(jù)庫(kù)中選取數(shù)據(jù)。
從數(shù)據(jù)庫(kù)表中選取數(shù)據(jù)
SELECT 語(yǔ)句用于從數(shù)據(jù)庫(kù)中選取數(shù)據(jù)。
語(yǔ)法
注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。SELECT 與 select 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 發(fā)送查詢或命令。
例子
下面的例子選取存儲(chǔ)在 "Person" 表中的所有數(shù)據(jù)(* 字符選取表中所有數(shù)據(jù)):
上面這個(gè)例子在 $result 變量中存放由 mysql_query() 函數(shù)返回的數(shù)據(jù)。接下來(lái),我們使用 mysql_fetch_array() 函數(shù)以數(shù)組的形式從記錄集返回第一行。每個(gè)隨后對(duì) mysql_fetch_array() 函數(shù)的調(diào)用都會(huì)返回記錄集中的下一行。 while loop 語(yǔ)句會(huì)循環(huán)記錄集中的所有記錄。為了輸出每行的值,我們使用了 PHP 的 $row 變量 ($row['FirstName'] 和 $row['LastName'])。
以上代碼的輸出:
Peter Griffin
Glenn Quagmire
在 HTML 表格中顯示結(jié)果
下面的例子選取的數(shù)據(jù)與上面的例子相同,但是將把數(shù)據(jù)顯示在一個(gè) HTML 表格中:
以上代碼的輸出:
PHP MySQL Where 子句
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語(yǔ)句添加 WHERE 子句。
WHERE 子句
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語(yǔ)句添加 WHERE 子句。
語(yǔ)法
下面的運(yùn)算符可與 WHERE 子句一起使用:
注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。WHERE 與 where 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
下面的例子將從 "Person" 表中選取所有 FirstName='Peter' 的行:
以上代碼的輸出:
Peter Griffin
PHP MySQL Order By 關(guān)鍵詞
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
ORDER BY 關(guān)鍵詞
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
語(yǔ)法
注釋:SQL 對(duì)大小寫不敏感。ORDER BY 與 order by 等效。
例子
下面的例子選取 "Person" 表中的存儲(chǔ)的所有數(shù)據(jù),并根據(jù) "Age" 列對(duì)結(jié)果進(jìn)行排序:
以上代碼的輸出:
Glenn Quagmire 33
Peter Griffin 35
升序或降序的排序
如果您使用 ORDER BY 關(guān)鍵詞,記錄集的排序順序默認(rèn)是升序(1 在 9 之前,"a" 在 "p" 之前)。
請(qǐng)使用 DESC 關(guān)鍵詞來(lái)設(shè)定降序排序(9 在 1 之前,"p" 在 "a" 之前):
根據(jù)兩列進(jìn)行排序
可以根據(jù)多個(gè)列進(jìn)行排序。當(dāng)按照多個(gè)列進(jìn)行排序時(shí),只有第一列相同時(shí)才使用第二列:
PHP MySQL Update
UPDATE 語(yǔ)句用于中修改數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。
更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)
UPDATE 語(yǔ)句用于在數(shù)據(jù)庫(kù)表中修改數(shù)據(jù)。
語(yǔ)法
注釋:SQL 對(duì)大小寫不敏感。UPDATE 與 update 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Person" 的表。它看起來(lái)類似這樣:
下面的例子更新 "Person" 表的一些數(shù)據(jù):
在這次更新后,"Person" 表格是這樣的:
PHP MySQL Delete From
DELETE FROM 語(yǔ)句用于從數(shù)據(jù)庫(kù)表中刪除行。
刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)
DELETE FROM 語(yǔ)句用于從數(shù)據(jù)庫(kù)表中刪除記錄。
語(yǔ)法
注釋:SQL 對(duì)大小寫不敏感。DELETE FROM 與 delete from 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Person" 的表。它看起來(lái)類似這樣:
下面的例子刪除 "Person" 表中所有 LastName='Griffin' 的記錄:
在這次刪除之后,表是這樣的:
PHP Database ODBC
ODBC 指的是(Application Programming Interface,API),使我們有能力連接到某個(gè)數(shù)據(jù)源(比如一個(gè) MS Access 數(shù)據(jù)庫(kù))。
創(chuàng)建 ODBC 連接
通過(guò)一個(gè) ODBC 連接,您可以連接到您的網(wǎng)絡(luò)中的任何計(jì)算機(jī)上的任何數(shù)據(jù)庫(kù),只要 ODBC 連接是可用的。
這是創(chuàng)建到達(dá) MS Access 數(shù)據(jù)的 ODBC 連接的方法:
在控制面板中打開(kāi)管理工具
雙擊其中的數(shù)據(jù)源 (ODBC) 圖標(biāo)
選擇系統(tǒng) DSN 選項(xiàng)卡
點(diǎn)擊系統(tǒng) DSN 選項(xiàng)卡中的“添加”按鈕
選擇 Microsoft Access Driver。點(diǎn)擊完成。
在下一個(gè)界面,點(diǎn)擊“選擇”來(lái)定位數(shù)據(jù)庫(kù)。
為這個(gè)數(shù)據(jù)庫(kù)取一個(gè)數(shù)據(jù)源名 (DSN)。
點(diǎn)擊確定。
請(qǐng)注意,必須在您的網(wǎng)站所在的計(jì)算機(jī)上完成這個(gè)配置。如果您的計(jì)算機(jī)上正在運(yùn)行 Internet 信息服務(wù)器 (IIS),上面的指令會(huì)生效,但是假如您的網(wǎng)站位于遠(yuǎn)程服務(wù)器,您必須擁有對(duì)該服務(wù)器的物理訪問(wèn)權(quán)限,或者請(qǐng)您的主機(jī)提供商為您建立 DSN。
連接到 ODBC
odbc_connect() 函數(shù)用于連接到 ODBC 數(shù)據(jù)源。該函數(shù)有四個(gè)參數(shù):數(shù)據(jù)源名、用戶名、密碼以及可選的指針類型參數(shù)。
odbc_exec() 函數(shù)用于執(zhí)行 SQL 語(yǔ)句。
例子
下面的例子創(chuàng)建了到達(dá)名為 northwind 的 DSN 的連接,不沒(méi)有用戶名和密碼。然后創(chuàng)建并執(zhí)行一條 SQL 語(yǔ)句:
取回記錄
odbc_fetch_row() 函數(shù)用于從結(jié)果集中返回記錄。如果能夠返回行,則返回 true,否則返回 false。
該函數(shù)有兩個(gè)參數(shù):ODBC 結(jié)果標(biāo)識(shí)符和可選的行號(hào):
從記錄中取回字段
odbc_result() 函數(shù)用于從記錄中讀取字段。該函數(shù)有兩個(gè)參數(shù):ODBC 結(jié)果標(biāo)識(shí)符和字段編號(hào)或名稱。
下面的代碼行從記錄中返回第一個(gè)字段的值:
The code line below returns the value of a field called "CompanyName":
關(guān)閉 ODBC 連接
odbc_close()函數(shù)用于關(guān)閉 ODBC 連接。
ODBC 實(shí)例
下面的例子展示了如何首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接,然后是結(jié)果集,然后在 HTML 表格中顯示數(shù)據(jù)。
MySQL 是最流行的開(kāi)源數(shù)據(jù)庫(kù)服務(wù)器。
什么是 MySQL?
MySQL 是一種數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)定義了存儲(chǔ)信息的結(jié)構(gòu)。
在數(shù)據(jù)庫(kù)中,存在著一些表。類似 HTML 表格,數(shù)據(jù)庫(kù)表含有行、列以及單元。
在分類存儲(chǔ)信息時(shí),數(shù)據(jù)庫(kù)非常有用。一個(gè)公司的數(shù)據(jù)庫(kù)可能擁有這些表:"Employees", "Products", "Customers" 以及 "Orders"。
數(shù)據(jù)庫(kù)表
數(shù)據(jù)庫(kù)通常包含一個(gè)或多個(gè)表。每個(gè)表都一個(gè)名稱(比如 "Customers" 或 "Orders")。每個(gè)表包含帶有數(shù)據(jù)的記錄(行)。
下面是一個(gè)名為 "Persons" 的表的例子:

上面的表含有三個(gè)記錄(每個(gè)記錄是一個(gè)人)和四個(gè)列(LastName, FirstName, Address 以及 City)。
查詢
查詢是一種詢問(wèn)或請(qǐng)求。
通過(guò) MySQL,我們可以向數(shù)據(jù)庫(kù)查詢具體的信息,并得到返回的記錄集。
請(qǐng)看下面的查詢:
SELECT LastName FROM Persons
上面的查詢選取了 Persons 表中 LastName 列的所有數(shù)據(jù),并返回類似這樣的記錄集:

下載 MySQL 數(shù)據(jù)庫(kù)
如果您的 PHP 服務(wù)器沒(méi)有 MySQL 數(shù)據(jù)庫(kù),可以在此下載 MySQL:http://www.mysql.com/downloads/index.html
Facts About MySQL Database
關(guān)于 MySQL 的一點(diǎn)很棒的特性是,可以對(duì)它進(jìn)行縮減,來(lái)支持嵌入的數(shù)據(jù)庫(kù)應(yīng)用程序。也許正因如此,許多人認(rèn)為 MySQL 僅僅能處理中小型的系統(tǒng)。
事實(shí)上,對(duì)于那些支持巨大數(shù)據(jù)和訪問(wèn)量的網(wǎng)站,MySQL 是事實(shí)上的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)(比如 Friendster, Yahoo, Google)。這個(gè)地址提供了使用 MySQL 的公司的概覽:http://www.mysql.com/customers/。
PHP MySQL 連接數(shù)據(jù)庫(kù)
免費(fèi)的 MySQL 數(shù)據(jù)庫(kù)通常是通過(guò) PHP 來(lái)使用的。
連接到一個(gè) MySQL 數(shù)據(jù)庫(kù)
在您能夠訪問(wèn)并處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)之前,您必須創(chuàng)建到達(dá)數(shù)據(jù)庫(kù)的連接。
在 PHP 中,這個(gè)任務(wù)通過(guò) mysql_connect() 函數(shù)完成。
語(yǔ)法
mysql_connect(servername,username,password);

注釋:雖然還存在其他的參數(shù),但上面列出了最重要的參數(shù)。請(qǐng)?jiān)L問(wèn) W3School 提供的 PHP MySQL 參考手冊(cè),獲得更多的細(xì)節(jié)信息。
例子
在下面的例子中,我們?cè)谝粋€(gè)變量中 ($con) 存放了在腳本中供稍后使用的連接。如果連接失敗,將執(zhí)行 "die" 部分:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // some code ?>
關(guān)閉連接
腳本一結(jié)束,就會(huì)關(guān)閉連接。如需提前關(guān)閉連接,請(qǐng)使用 mysql_close() 函數(shù)。
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // some code mysql_close($con); ?>
PHP MySQL 創(chuàng)建數(shù)據(jù)庫(kù)和表
數(shù)據(jù)庫(kù)存有一個(gè)或多個(gè)表。
創(chuàng)建數(shù)據(jù)庫(kù)
CREATE DATABASE 語(yǔ)句用于在 MySQL 中創(chuàng)建數(shù)據(jù)庫(kù)。
語(yǔ)法
CREATE DATABASE database_name
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。此函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在下面的例子中,我們創(chuàng)建了一個(gè)名為 "my_db" 的數(shù)據(jù)庫(kù):
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } mysql_close($con); ?>
創(chuàng)建表
CREATE TABLE 用于在 MySQL 中創(chuàng)建數(shù)據(jù)庫(kù)表。
語(yǔ)法
CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, ....... )
為了執(zhí)行此命令,我必須向 mysql_query() 函數(shù)添加 CREATE TABLE 語(yǔ)句。
例子
下面的例子展示了如何創(chuàng)建一個(gè)名為 "person" 的表,此表有三列。列名是 "FirstName", "LastName" 以及 "Age":
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } // Create database if (mysql_query("CREATE DATABASE my_db",$con)) { echo "Database created"; } else { echo "Error creating database: " . mysql_error(); } // Create table in my_db database mysql_select_db("my_db", $con); $sql = "CREATE TABLE person ( FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con); mysql_close($con); ?>
重要事項(xiàng):在創(chuàng)建表之前,必須首先選擇數(shù)據(jù)庫(kù)。通過(guò) mysql_select_db() 函數(shù)選取數(shù)據(jù)庫(kù)。
注釋:當(dāng)您創(chuàng)建 varchar 類型的數(shù)據(jù)庫(kù)字段時(shí),必須規(guī)定該字段的最大長(zhǎng)度,例如:varchar(15)。
MySQL 數(shù)據(jù)類型


主鍵和自動(dòng)遞增字段
每個(gè)表都應(yīng)有一個(gè)主鍵字段。
主鍵用于對(duì)表中的行進(jìn)行唯一標(biāo)識(shí)。每個(gè)主鍵值在表中必須是唯一的。此外,主鍵字段不能為空,這是由于數(shù)據(jù)庫(kù)引擎需要一個(gè)值來(lái)對(duì)記錄進(jìn)行定位。
主鍵字段永遠(yuǎn)要被編入索引。這條規(guī)則沒(méi)有例外。你必須對(duì)主鍵字段進(jìn)行索引,這樣數(shù)據(jù)庫(kù)引擎才能快速定位給予該鍵值的行。
下面的例子把 personID 字段設(shè)置為主鍵字段。主鍵字段通常是 ID 號(hào),且通常使用 AUTO_INCREMENT 設(shè)置。AUTO_INCREMENT 會(huì)在新紀(jì)錄被添加時(shí)逐一增加該字段的值。要確保主鍵字段不為空,我們必須向該字段添加 NOT NULL 設(shè)置。
例子
$sql = "CREATE TABLE person ( personID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(personID), FirstName varchar(15), LastName varchar(15), Age int )"; mysql_query($sql,$con);
PHP MySQL Insert Into
INSERT INTO 語(yǔ)句用于向數(shù)據(jù)庫(kù)表中插入新紀(jì)錄。
向數(shù)據(jù)庫(kù)表插入數(shù)據(jù)
INSERT INTO 語(yǔ)句用于向數(shù)據(jù)庫(kù)表添加新紀(jì)錄。
語(yǔ)法
INSERT INTO table_name VALUES (value1, value2,....)
您還可以規(guī)定希望在其中插入數(shù)據(jù)的列:
INSERT INTO table_name (column1, column2,...) VALUES (value1, value2,....)
注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。INSERT INTO 與 insert into 相同。
為了讓 PHP 執(zhí)行該語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在前面的章節(jié),我們創(chuàng)建了一個(gè)名為 "Person" 的表,有三個(gè)列:"Firstname", "Lastname" 以及 "Age"。我們將在本例中使用同樣的表。下面的例子向 "Person" 表添加了兩個(gè)新紀(jì)錄:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("INSERT INTO person (FirstName, LastName, Age) VALUES ('Peter', 'Griffin', '35')"); mysql_query("INSERT INTO person (FirstName, LastName, Age) VALUES ('Glenn', 'Quagmire', '33')"); mysql_close($con); ?>
把來(lái)自表單的數(shù)據(jù)插入數(shù)據(jù)庫(kù)
現(xiàn)在,我們創(chuàng)建一個(gè) HTML 表單,這個(gè)表單可把新紀(jì)錄插入 "Person" 表。
這是這個(gè) HTML 表單:
<html> <body> <form action="insert.php" method="post"> Firstname: <input type="text" name="firstname" /> Lastname: <input type="text" name="lastname" /> Age: <input type="text" name="age" /> <input type="submit" /> </form> </body> </html>
當(dāng)用戶點(diǎn)擊上例中 HTML 表單中的提交按鈕時(shí),表單數(shù)據(jù)被發(fā)送到 "insert.php"。"insert.php" 文件連接數(shù)據(jù)庫(kù),并通過(guò) $_POST 變量從表單取回值。然后,mysql_query() 函數(shù)執(zhí)行 INSERT INTO 語(yǔ)句,一條新的記錄會(huì)添加到數(shù)據(jù)庫(kù)表中。
下面是 "insert.php" 頁(yè)面的代碼:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $sql="INSERT INTO person (FirstName, LastName, Age) VALUES ('$_POST[firstname]','$_POST[lastname]','$_POST[age]')"; if (!mysql_query($sql,$con)) { die('Error: ' . mysql_error()); } echo "1 record added"; mysql_close($con) ?>
PHP MySQL Select
SELECT 語(yǔ)句用于從數(shù)據(jù)庫(kù)中選取數(shù)據(jù)。
從數(shù)據(jù)庫(kù)表中選取數(shù)據(jù)
SELECT 語(yǔ)句用于從數(shù)據(jù)庫(kù)中選取數(shù)據(jù)。
語(yǔ)法
SELECT column_name(s) FROM table_name
注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。SELECT 與 select 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 發(fā)送查詢或命令。
例子
下面的例子選取存儲(chǔ)在 "Person" 表中的所有數(shù)據(jù)(* 字符選取表中所有數(shù)據(jù)):
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM person"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; } mysql_close($con); ?>
上面這個(gè)例子在 $result 變量中存放由 mysql_query() 函數(shù)返回的數(shù)據(jù)。接下來(lái),我們使用 mysql_fetch_array() 函數(shù)以數(shù)組的形式從記錄集返回第一行。每個(gè)隨后對(duì) mysql_fetch_array() 函數(shù)的調(diào)用都會(huì)返回記錄集中的下一行。 while loop 語(yǔ)句會(huì)循環(huán)記錄集中的所有記錄。為了輸出每行的值,我們使用了 PHP 的 $row 變量 ($row['FirstName'] 和 $row['LastName'])。
以上代碼的輸出:
Peter Griffin
Glenn Quagmire
在 HTML 表格中顯示結(jié)果
下面的例子選取的數(shù)據(jù)與上面的例子相同,但是將把數(shù)據(jù)顯示在一個(gè) HTML 表格中:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM person"); echo "<table border='1'> <tr> <th>Firstname</th> <th>Lastname</th> </tr>"; while($row = mysql_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['FirstName'] . "</td>"; echo "<td>" . $row['LastName'] . "</td>"; echo "</tr>"; } echo "</table>"; mysql_close($con); ?>
以上代碼的輸出:

PHP MySQL Where 子句
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語(yǔ)句添加 WHERE 子句。
WHERE 子句
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語(yǔ)句添加 WHERE 子句。
語(yǔ)法
SELECT column FROM table WHERE column operator value
下面的運(yùn)算符可與 WHERE 子句一起使用:

注釋:SQL 語(yǔ)句對(duì)大小寫不敏感。WHERE 與 where 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
下面的例子將從 "Person" 表中選取所有 FirstName='Peter' 的行:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM person WHERE FirstName='Peter'"); while($row = mysql_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br />"; } ?>
以上代碼的輸出:
Peter Griffin
PHP MySQL Order By 關(guān)鍵詞
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
ORDER BY 關(guān)鍵詞
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
語(yǔ)法
SELECT column_name(s) FROM table_name ORDER BY column_name
注釋:SQL 對(duì)大小寫不敏感。ORDER BY 與 order by 等效。
例子
下面的例子選取 "Person" 表中的存儲(chǔ)的所有數(shù)據(jù),并根據(jù) "Age" 列對(duì)結(jié)果進(jìn)行排序:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); $result = mysql_query("SELECT * FROM person ORDER BY age"); while($row = mysql_fetch_array($result)) { echo $row['FirstName']; echo " " . $row['LastName']; echo " " . $row['Age']; echo "<br />"; } mysql_close($con); ?>
以上代碼的輸出:
Glenn Quagmire 33
Peter Griffin 35
升序或降序的排序
如果您使用 ORDER BY 關(guān)鍵詞,記錄集的排序順序默認(rèn)是升序(1 在 9 之前,"a" 在 "p" 之前)。
請(qǐng)使用 DESC 關(guān)鍵詞來(lái)設(shè)定降序排序(9 在 1 之前,"p" 在 "a" 之前):
SELECT column_name(s) FROM table_name ORDER BY column_name DESC
根據(jù)兩列進(jìn)行排序
可以根據(jù)多個(gè)列進(jìn)行排序。當(dāng)按照多個(gè)列進(jìn)行排序時(shí),只有第一列相同時(shí)才使用第二列:
SELECT column_name(s) FROM table_name ORDER BY column_name1, column_name2
PHP MySQL Update
UPDATE 語(yǔ)句用于中修改數(shù)據(jù)庫(kù)表中的數(shù)據(jù)。
更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)
UPDATE 語(yǔ)句用于在數(shù)據(jù)庫(kù)表中修改數(shù)據(jù)。
語(yǔ)法
UPDATE table_name SET column_name = new_value WHERE column_name = some_value
注釋:SQL 對(duì)大小寫不敏感。UPDATE 與 update 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Person" 的表。它看起來(lái)類似這樣:

下面的例子更新 "Person" 表的一些數(shù)據(jù):
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("UPDATE Person SET Age = '36' WHERE FirstName = 'Peter' AND LastName = 'Griffin'"); mysql_close($con); ?>
在這次更新后,"Person" 表格是這樣的:

PHP MySQL Delete From
DELETE FROM 語(yǔ)句用于從數(shù)據(jù)庫(kù)表中刪除行。
刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)
DELETE FROM 語(yǔ)句用于從數(shù)據(jù)庫(kù)表中刪除記錄。
語(yǔ)法
DELETE FROM table_name WHERE column_name = some_value
注釋:SQL 對(duì)大小寫不敏感。DELETE FROM 與 delete from 等效。
為了讓 PHP 執(zhí)行上面的語(yǔ)句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Person" 的表。它看起來(lái)類似這樣:

下面的例子刪除 "Person" 表中所有 LastName='Griffin' 的記錄:
<?php $con = mysql_connect("localhost","peter","abc123"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("my_db", $con); mysql_query("DELETE FROM Person WHERE LastName='Griffin'"); mysql_close($con); ?>
在這次刪除之后,表是這樣的:

PHP Database ODBC
ODBC 指的是(Application Programming Interface,API),使我們有能力連接到某個(gè)數(shù)據(jù)源(比如一個(gè) MS Access 數(shù)據(jù)庫(kù))。
創(chuàng)建 ODBC 連接
通過(guò)一個(gè) ODBC 連接,您可以連接到您的網(wǎng)絡(luò)中的任何計(jì)算機(jī)上的任何數(shù)據(jù)庫(kù),只要 ODBC 連接是可用的。
這是創(chuàng)建到達(dá) MS Access 數(shù)據(jù)的 ODBC 連接的方法:
在控制面板中打開(kāi)管理工具
雙擊其中的數(shù)據(jù)源 (ODBC) 圖標(biāo)
選擇系統(tǒng) DSN 選項(xiàng)卡
點(diǎn)擊系統(tǒng) DSN 選項(xiàng)卡中的“添加”按鈕
選擇 Microsoft Access Driver。點(diǎn)擊完成。
在下一個(gè)界面,點(diǎn)擊“選擇”來(lái)定位數(shù)據(jù)庫(kù)。
為這個(gè)數(shù)據(jù)庫(kù)取一個(gè)數(shù)據(jù)源名 (DSN)。
點(diǎn)擊確定。
請(qǐng)注意,必須在您的網(wǎng)站所在的計(jì)算機(jī)上完成這個(gè)配置。如果您的計(jì)算機(jī)上正在運(yùn)行 Internet 信息服務(wù)器 (IIS),上面的指令會(huì)生效,但是假如您的網(wǎng)站位于遠(yuǎn)程服務(wù)器,您必須擁有對(duì)該服務(wù)器的物理訪問(wèn)權(quán)限,或者請(qǐng)您的主機(jī)提供商為您建立 DSN。
連接到 ODBC
odbc_connect() 函數(shù)用于連接到 ODBC 數(shù)據(jù)源。該函數(shù)有四個(gè)參數(shù):數(shù)據(jù)源名、用戶名、密碼以及可選的指針類型參數(shù)。
odbc_exec() 函數(shù)用于執(zhí)行 SQL 語(yǔ)句。
例子
下面的例子創(chuàng)建了到達(dá)名為 northwind 的 DSN 的連接,不沒(méi)有用戶名和密碼。然后創(chuàng)建并執(zhí)行一條 SQL 語(yǔ)句:
$conn=odbc_connect('northwind','',''); $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql);
取回記錄
odbc_fetch_row() 函數(shù)用于從結(jié)果集中返回記錄。如果能夠返回行,則返回 true,否則返回 false。
該函數(shù)有兩個(gè)參數(shù):ODBC 結(jié)果標(biāo)識(shí)符和可選的行號(hào):
odbc_fetch_row($rs)
從記錄中取回字段
odbc_result() 函數(shù)用于從記錄中讀取字段。該函數(shù)有兩個(gè)參數(shù):ODBC 結(jié)果標(biāo)識(shí)符和字段編號(hào)或名稱。
下面的代碼行從記錄中返回第一個(gè)字段的值:
$compname=odbc_result($rs,1);
The code line below returns the value of a field called "CompanyName":
$compname=odbc_result($rs,"CompanyName");
關(guān)閉 ODBC 連接
odbc_close()函數(shù)用于關(guān)閉 ODBC 連接。
odbc_close($conn);
ODBC 實(shí)例
下面的例子展示了如何首先創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)連接,然后是結(jié)果集,然后在 HTML 表格中顯示數(shù)據(jù)。
<html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) {exit("Connection Failed: " . $conn);} $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs) {exit("Error in SQL");} echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; } odbc_close($conn); echo "</table>"; ?> </body> </html>
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
