詳細解析 PHP 向 MySQL 傳送資料過程

2022-04-05 06:57:36 字數 4572 閱讀 5622

下面的一段**是乙個很簡單的 html 表單:

姓:名:

當你輸入資料,並按下 submit 按鈕後,這個表單將把資料傳送到 submitform.php3 。再由這個 php 指令碼來處理收到的資料,下面就是 submitform.php3 的**:

<?php

mysql_connect(localhost,username,password);

mysql_select_db(dbname);

mysql_query("insertintotablename(first_name,last_name)

values('$first_name','$last_name')

");print($first_name);

print("");

print($last_name);

print("");

print("感謝填寫登錄檔");

?>

在**的第三行中的 "username" 和 "password" 分別代表你登陸 mysql 資料庫的賬號和密碼。在第五行中的 "dbname" 表示 mysql 資料庫的名稱。在第十三行中的 "tablename" 是資料庫中的乙個資料表的名稱。

當你按下 submit 之後,可以看到你輸入的名字被顯示在乙個新的頁面中。再看一看瀏覽器的 url 欄,它的內容應該是像這樣的:

… /submitform.php3?first_name=fred&last_name=flintstone

因為我們用到的是表單 get 方法,因此資料是通過 url 來傳送到 submitform.php3 的。顯然, get 方法是有侷限性的,當要傳遞的內容很多時,就不能用 get 了,只能用 post 方法。但不管用什麼方法,當資料傳送完成後, php 自動的為每乙個表單中的字段建立乙個和他們的名字(表單的 name 屬性)相同的變數。

php 變數都已用乙個美元符號開頭的,這樣,在 submitform.php3 指令碼處理的過程中,就會有 $first_name 和 $last_name 這兩個變數了,變數的內容就是你輸入的內容。

我們來檢查一下你輸入的名字是否真的被輸入到資料庫中了。啟動 mysql, 在 mysql> 提示符下輸入:

mysql> select * from tablename;

你應該可以得到乙個表,內容就是你剛才輸入的了:

| first_name | last_name |

| 柳 | 如風

1 rows in set (0.00 sec)

我們再來分析一下 submitform.php3 是如何工作的:

指令碼的開始兩行是:

mysql_connect(localhost,username,password);

mysql_select_db(dbname);

這兩個函式呼叫用來開啟 mysql 資料庫,具體的引數的含義剛才已經說過了。

下面的一行是執行乙個 sql 語句 :

mysql_query("insertintotablename(first_name,last_name)

values('$first_name','$last_name')

");

mysql_query 函式就是用來對選定的資料庫執行乙個 sql 查詢。你可以在 mysql_query 函式中執行任何的 sql 語句。被執行的 sql 語句必須作為乙個字串用雙引號括起來,在其中的變數要用單引號括起來。

有乙個要注意的事情: mysql 的語句要用乙個分號 (;) 結束,一行 php **同樣也是這樣,但是在 php 指令碼中的 mysql 語句是不能有分號的。也就是說,當你在 mysql> 的提示符下輸入 mysql 命令,你應該加上分號:

insertintotablename(first_name,last_name)

values('$first_name','$last_name');

但是如果這個命令出現在 php 指令碼中,就要去掉那個分號了。之所以這樣做,是因為有的語句,如 select 和 insert ,有沒有分號都可以工作。但是還有一些語句,如 update ,加上分號就不行了。為了避免麻煩,記住這條規則就好了。

php 如何從 mysql 中提取資料

現在我們建立另外乙個 html 表單來執行這個任務:

請輸入您的查詢內容:

姓:名:

同樣,還要有乙個 php 指令碼來處理這個表單,我們再建立乙個 searchform.php3 檔案:

<?php

mysql_connect(localhost,username,password);

mysql_select_db(dbname);

if($first_name=="")

if($last_name=="")

$result=mysql_query("select*fromtablename

wherefirst_namelike'$first_name%'

andlast_namelike'$last_name%'

");if($row=mysql_fetch_array($result))while($row=mysql_fetch_array($result));

}else

?>

當你在表單中輸入了要檢索的內容,再按下 submit 按鈕後,就會進入乙個新的頁面,其中列出了所有匹配的搜尋結果。下面再來看看這段指令碼到底是怎樣完成搜尋任務的。

前面的幾條語句和上面講到的一樣,先是建立資料庫連線,然後選定資料庫和資料表,這些是每個資料庫應用所必需的。然後有這樣的幾條語句:

if($first_name=="")

if($last_name=="")

這幾行用來檢查表單的各欄位是否為空。要注意的是那兩個等號,因為 php 的語法大多源於 c 語言,這兒等號的用法也同 c 一樣:乙個等號是賦值號,兩個等號才代表邏輯等於。還應該注意的是:當 if 後條件為真時,後面要執行的語句是放在「 」中的,並且其中的每一條語句後面都要加上分號表示語句結束。

百分號 % 是 sql 語言的萬用字元,理解了之一點後,就該知道這兩行的意思了:如果「 first_name 」欄位為空,那麼將列出所有的 first_name 。後面的兩句也是同樣的意思。

$result=mysql_query("select*fromtablename

wherefirst_namelike'$first_name%'

andlast_namelike'$last_name%'"

");

這一行完成了搜尋的大部分工作。當 mysql_query 函式完成乙個查詢後,它返回乙個整數標誌。

查詢從所有的記錄中選出那些 first_name 列和 $first_name 變數相同,並且 last_name 列和 $last_name 變數值也相同的記錄,放到暫存的記錄集中,並用返回的整數作為這個記錄集的標誌。

if($row=mysql_fetch_array($result))while($row=mysql_fetch_array($result));

}else

這是最後的一步,就是顯示部分了。 mysql_fetch_array 函式先提取出查詢結果的第一行的內容,在用 print 語句顯示出來。這個函式的引數就是 mysql_query 函式返回的整數標誌。而 mysql_fetch_array 執行成功後,記錄集指標會自動下移,這樣當再一次執行 mysql_fetch_array 時,得到的就是下一行紀錄的內容了。

陣列變數 $row 被 mysql_fetch_array 函式建立並用查詢的結果欄位來填充,陣列的每乙個分量對應於查詢結果的每乙個字段。

如果有符合的紀錄被找到,變數 $row 不會空,這時就會執行花括號中的語句:

dowhile($row=mysql_fetch_array($result));

這是乙個 do … while 迴圈。與 while 迴圈不同的是,它是先執行一遍迴圈迴圈體,然後在檢查迴圈條件是否滿足。由於已經知道在紀錄集不為空的情況下,肯定至少要把迴圈體執行一遍,所以應該用到的是 do … while 而不是 while 迴圈了。在花括號中的就是要執行的迴圈體:

print$row["first_name"];

print("");

print$row["last_name"];

print("

然後就是檢查 while 條件是否滿足。 mysql_fetch_array 函式再次被呼叫,來得到當前紀錄的內容。這個過程一直迴圈,當沒有下一條紀錄存在時, mysql_fetch_array 返回 false ,迴圈結束,紀錄集也就被完全的遍歷了一次。

mysql_fetch_array($result) 返回的陣列,不僅可以用欄位名來呼叫,也可以像一般的陣列那樣,用下標來引用陣列的各個分量。這樣,上面的**還可以寫成這樣:

print$row[0];

print("");

print$row[1];

print("

我們還可以用 echo 函式來把這四條語句寫的緊湊一些:

echo $row[0], " ", $row[1], "< p>";

當沒有任何匹配的紀錄被找到時,在 $row 中就不會有任何內容,這時就會呼叫 if 語句的 else 子句了:

else

使用php指令碼向mysql伺服器傳送sql

1 複習 使用php指令碼向mysql伺服器傳送sql link mysql connect localhost 主機名 mysql user 使用者名稱 mysql password 密碼 or die 連線失敗 mysql error mysql select db 資料庫名 link or d...

使用php指令碼向Mysql伺服器傳送SQL(基本)

1.php連線mysql伺服器 resource mysql connect mysql伺服器的主機名 使用者名稱 密碼 連線成功時,返回乙個資源型別的標誌符號。連線失敗時,返回false,並向web伺服器傳送一條出錯資訊。使用例項 link mysql connect localhost root...

PHP傳送郵件詳細說明

裡面有很多檔案,但是目前主要就用到兩個檔案 class.phpmailer.php class.smtp.php qq的smtp伺服器是 smtp.qq.com 埠號為465 或587 163smtp伺服器是 smtp.163.com 埠25 created by phpstorm.user adm...