網(wǎng)站注冊(cè)手機(jī)號(hào)安全嗎深圳網(wǎng)絡(luò)營(yíng)銷
PHP MySQL 連接數(shù)據(jù)庫
- MySQL 簡(jiǎn)介
- MySQL Create
免費(fèi)的 MySQL 數(shù)據(jù)庫通常是通過 PHP 來使用的。
連接到一個(gè) MySQL 數(shù)據(jù)庫
在您能夠訪問并處理數(shù)據(jù)庫中的數(shù)據(jù)之前,您必須創(chuàng)建到達(dá)數(shù)據(jù)庫的連接。
在 PHP 中,這個(gè)任務(wù)通過 mysql_connect() 函數(shù)完成。
語法
mysql_connect(servername,username,password);
注釋:雖然還存在其他的參數(shù),但上面列出了最重要的參數(shù)。請(qǐng)?jiān)L問 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 codemysql_close($con);
?>
數(shù)據(jù)庫存有一個(gè)或多個(gè)表。
創(chuàng)建數(shù)據(jù)庫
CREATE DATABASE 語句用于在 MySQL 中創(chuàng)建數(shù)據(jù)庫。
語法
CREATE DATABASE database_name
為了讓 PHP 執(zhí)行上面的語句,我們必須使用 mysql_query() 函數(shù)。此函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在下面的例子中,我們創(chuàng)建了一個(gè)名為 "my_db" 的數(shù)據(jù)庫:
<?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ù)庫表。
語法
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
.......
)
為了執(zhí)行此命令,我必須向 mysql_query() 函數(shù)添加 CREATE TABLE 語句。
例子
下面的例子展示了如何創(chuàng)建一個(gè)名為 "Persons" 的表,此表有三列。列名是 "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 Persons
(
FirstName varchar(15),
LastName varchar(15),
Age int
)";
mysql_query($sql,$con);mysql_close($con);
?>
重要事項(xiàng):在創(chuàng)建表之前,必須首先選擇數(shù)據(jù)庫。通過 mysql_select_db() 函數(shù)選取數(shù)據(jù)庫。
注釋:當(dāng)您創(chuàng)建 varchar 類型的數(shù)據(jù)庫字段時(shí),必須規(guī)定該字段的最大長(zhǎng)度,例如:varchar(15)。
MySQL 數(shù)據(jù)類型
下面的可使用的各種 MySQL 數(shù)據(jù)類型:
?
主鍵和自動(dòng)遞增字段
每個(gè)表都應(yīng)有一個(gè)主鍵字段。
主鍵用于對(duì)表中的行進(jìn)行唯一標(biāo)識(shí)。每個(gè)主鍵值在表中必須是唯一的。此外,主鍵字段不能為空,這是由于數(shù)據(jù)庫引擎需要一個(gè)值來對(duì)記錄進(jìn)行定位。
主鍵字段永遠(yuǎn)要被編入索引。這條規(guī)則沒有例外。你必須對(duì)主鍵字段進(jìn)行索引,這樣數(shù)據(jù)庫引擎才能快速定位給予該鍵值的行。
下面的例子把 personID 字段設(shè)置為主鍵字段。主鍵字段通常是 ID 號(hào),且通常使用 AUTO_INCREMENT 設(shè)置。AUTO_INCREMENT 會(huì)在新記錄被添加時(shí)逐一增加該字段的值。要確保主鍵字段不為空,我們必須向該字段添加 NOT NULL 設(shè)置。
例子
$sql = "CREATE TABLE Persons
(
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
- MySQL Create
- MySQL Select
INSERT INTO 語句用于向數(shù)據(jù)庫表中插入新記錄。
向數(shù)據(jù)庫表插入數(shù)據(jù)
INSERT INTO 語句用于向數(shù)據(jù)庫表添加新記錄。
語法
INSERT INTO table_name
VALUES (value1, value2,....)
?您還可以規(guī)定希望在其中插入數(shù)據(jù)的列:
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)
注釋:SQL 語句對(duì)大小寫不敏感。INSERT INTO 與 insert into 相同。
為了讓 PHP 執(zhí)行該語句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 連接發(fā)送查詢或命令。
例子
在前面的章節(jié),我們創(chuàng)建了一個(gè)名為 "Persons" 的表,有三個(gè)列:"Firstname", "Lastname" 以及 "Age"。我們將在本例中使用同樣的表。下面的例子向 "Persons" 表添加了兩個(gè)新記錄:
<?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 Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");mysql_close($con);
?>
把來自表單的數(shù)據(jù)插入數(shù)據(jù)庫
現(xiàn)在,我們創(chuàng)建一個(gè) HTML 表單,這個(gè)表單可把新記錄插入 "Persons" 表。
這是這個(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ù)庫,并通過 $_POST 變量從表單取回值。然后,mysql_query() 函數(shù)執(zhí)行 INSERT INTO 語句,一條新的記錄會(huì)添加到數(shù)據(jù)庫表中。
下面是 "insert.php" 頁面的代碼:
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con){die('Could not connect: ' . mysql_error());}mysql_select_db("my_db", $con);$sql="INSERT INTO Persons (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
- MySQL Insert
- MySQL Where
SELECT 語句用于從數(shù)據(jù)庫中選取數(shù)據(jù)。
從數(shù)據(jù)庫表中選取數(shù)據(jù)
SELECT 語句用于從數(shù)據(jù)庫中選取數(shù)據(jù)。
語法
SELECT column_name(s) FROM table_name
注釋:SQL 語句對(duì)大小寫不敏感。SELECT 與 select 等效。
為了讓 PHP 執(zhí)行上面的語句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 MySQL 發(fā)送查詢或命令。
例子
下面的例子選取存儲(chǔ)在 "Persons" 表中的所有數(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 Persons");while($row = mysql_fetch_array($result)){echo $row['FirstName'] . " " . $row['LastName'];echo "<br />";}mysql_close($con);
?>
上面這個(gè)例子在 $result 變量中存放由 mysql_query() 函數(shù)返回的數(shù)據(jù)。接下來,我們使用 mysql_fetch_array() 函數(shù)以數(shù)組的形式從記錄集返回第一行。每個(gè)隨后對(duì) mysql_fetch_array() 函數(shù)的調(diào)用都會(huì)返回記錄集中的下一行。 while loop 語句會(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 Persons");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 子句
- MySQL Select
- MySQL Order By
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語句添加 WHERE 子句。
WHERE 子句
如需選取匹配指定條件的數(shù)據(jù),請(qǐng)向 SELECT 語句添加 WHERE 子句。
語法
SELECT column FROM table
WHERE column operator value
注釋:SQL 語句對(duì)大小寫不敏感。WHERE 與 where 等效。
為了讓 PHP 執(zhí)行上面的語句,我們必須使用 mysql_query() 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
下面的例子將從 "Persons" 表中選取所有 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 Persons
WHERE FirstName='Peter'");while($row = mysql_fetch_array($result)){echo $row['FirstName'] . " " . $row['LastName'];echo "<br />";}?>
?
PHP MySQL Order By 關(guān)鍵詞
- MySQL Where
- MySQL Update
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
ORDER BY 關(guān)鍵詞
ORDER BY 關(guān)鍵詞用于對(duì)記錄集中的數(shù)據(jù)進(jìn)行排序。
語法
SELECT column_name(s)
FROM table_name
ORDER BY column_name
注釋:SQL 對(duì)大小寫不敏感。ORDER BY 與 order by 等效。
例子
下面的例子選取 "Persons" 表中的存儲(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 Persons ORDER BY age");while($row = mysql_fetch_array($result)){echo $row['FirstName'];echo " " . $row['LastName'];echo " " . $row['Age'];echo "<br />";}mysql_close($con);
?>
PHP MySQL Update
- MySQL Order By
- MySQL Delete
UPDATE 語句用于中修改數(shù)據(jù)庫表中的數(shù)據(jù)。
更新數(shù)據(jù)庫中的數(shù)據(jù)
UPDATE 語句用于在數(shù)據(jù)庫表中修改數(shù)據(jù)。
語法
UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value
注釋:SQL 對(duì)大小寫不敏感。UPDATE 與 update 等效。
為了讓 PHP 執(zhí)行上面的語句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Persons" 的表。它看起來類似這樣:
下面的例子更新 "Persons" 表的一些數(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 Persons SET Age = '36'
WHERE FirstName = 'Peter' AND LastName = 'Griffin'");mysql_close($con);
?>
?
PHP MySQL Delete From
- MySQL Update
- PHP ODBC
DELETE FROM 語句用于從數(shù)據(jù)庫表中刪除行。
刪除數(shù)據(jù)庫中的數(shù)據(jù)
DELETE FROM 語句用于從數(shù)據(jù)庫表中刪除記錄。
語法
DELETE FROM table_name
WHERE column_name = some_value
注釋:SQL 對(duì)大小寫不敏感。DELETE FROM 與 delete from 等效。
為了讓 PHP 執(zhí)行上面的語句,我們必須使用 mysql_query( 函數(shù)。該函數(shù)用于向 SQL 連接發(fā)送查詢和命令。
例子
稍早時(shí),我們?cè)诒窘坛讨袆?chuàng)建了一個(gè)名為 "Persons" 的表。它看起來類似這樣:
下面的例子刪除 "Persons" 表中所有 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 Persons WHERE LastName='Griffin'");mysql_close($con);
?>
?
PHP Database ODBC
- MySQL Delete
- XML Expat Parser
ODBC 是一種應(yīng)用程序編程接口(Application Programming Interface,API),使我們有能力連接到某個(gè)數(shù)據(jù)源(比如一個(gè) MS Access 數(shù)據(jù)庫)。
創(chuàng)建 ODBC 連接
通過一個(gè) ODBC 連接,您可以連接到您的網(wǎng)絡(luò)中的任何計(jì)算機(jī)上的任何數(shù)據(jù)庫,只要 ODBC 連接是可用的。
這是創(chuàng)建到達(dá) MS Access 數(shù)據(jù)的 ODBC 連接的方法:
- 在控制面板中打開管理工具
- 雙擊其中的數(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)擊“選擇”來定位數(shù)據(jù)庫。
- 為這個(gè)數(shù)據(jù)庫取一個(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ù)器的物理訪問權(quán)限,或者請(qǐng)您的主機(jī)提供商為您建立 DSN。
連接到 ODBC
odbc_connect() 函數(shù)用于連接到 ODBC 數(shù)據(jù)源。該函數(shù)有四個(gè)參數(shù):數(shù)據(jù)源名、用戶名、密碼以及可選的指針類型參數(shù)。
odbc_exec() 函數(shù)用于執(zhí)行 SQL 語句。
例子
下面的例子創(chuàng)建了到達(dá)名為 northwind 的 DSN 的連接,沒有用戶名和密碼。然后創(chuàng)建并執(zhí)行一條 SQL 語句:
$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)
?