熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

初學入門 PHP 和 MySQL

2013-11-15 12:23:15  來源: PHP編程 

  我想要使用要使用PHP和MySQL但是如何安裝和運行呢?什麼是最基本的事情我應該知道的以便讓一個簡單的PHP MySQL應用程序工作?

  這是一個基本的教程沒有怪異的代碼只是一些基礎

  多說一句現在有大量的教程是基於UNIX機器的這個教程將集中在基於Windows平台上然而除了安裝部分有或多或少的針對於Windows的說明外其它部分對所有的平台都是一樣的

  在這個教程中我們將一步一步地建立一個小的網站使用了PHP和MySQL的下面特性

   查看數據庫
   編輯數據庫的記錄
   修改數據庫的記錄
   刪除數據庫的記錄

  我們將同時學習MySQL和PHP一起去感覺它們

第一節 收集和建立必要的項目

  好開始工作為了開始PHPMySQL我們需要一些准備

   運行web服務器
   增加PHP擴展
   運行MySQL

  第一步得到和安裝Web服務器

  讓我們假設一下在你的機器上已經有一個運行著的web服務器在Windows下有幾個好用的web服務器應
用程序要注意一件事為了運行php/mysql你所選的web服務器應當可以支持擴展

  一個在Windows上最容易安裝的服務器是OmniHTTPd(它是一個非
常好的自由web服務器

  一旦你從站點上得到了安裝文件雙擊它並且安裝web服務器如果你在安裝時全部選擇了使用缺省值
那麼你將會把它安裝在c:httpd下一旦安裝成功安裝程序將啟動web服務器帶有一個歡迎窗口
windows的系統托盤中可以看到一個新的圖標

  好了第一步做完了

  第二步下載和安裝PHP發行版

  得到PHP Win發行版很容易只要/downloadphpphp並且選擇一個最好的
位置就可以了

  在OmniHTTPd上安裝PHP非常簡單

  最先Unzip安裝文件到你的硬盤上比如展開在c:php

  拷貝文件phpinidist到你的%WINDOWS目錄下去並改名phpini(在Win/為c:windows
WinNT/Wink為c:winnt)

  按下面編輯phpini文件

  改變extension_dir設置為你的PHP安裝目錄(c:php)或存放php_*dll的目錄

  選擇想在PHP啟動時裝入的模塊你應該將extension=php_*dll行的注釋去掉來裝入這些模塊(一定
要確認去掉了extension=php_mysqldll的注釋)一些模塊要求有額外的庫安裝在你的系統上才能正常工作

  PHP問答集/FAQphp)有更多關於如何得到支持庫的信息你可以通過使用
dl(php_*dll)動態地裝入一個模塊

  PHP擴展庫以php_為前綴這個可以防止在PHP擴展與它們的支持庫之間發生混淆

  現在跟著簡單的步驟配置OmniHTTPd:

  在系統托盤中右擊藍色的OmniHTTPd圖標選項屬性(Properties)項

  點擊Web Server Global Settings項

  點中Externaltab標簽現在Virtual域中輸入phpactual域中輸入c:phpphpexe
然後單擊Add

  選擇Mime tab標簽並且在Vritual中輸入wwwserver/stdcgiActual中輸入php並單
Add

  單擊 OK

  在同一個窗體中選擇Default Virtual Settings

  現在單擊Server tab標簽

  在Default Index域中輸入Indexphp(用逗號分隔)這將告訴web服務器也可以識別indexphp文件

  單擊 OK

  好足夠了讓我們測試一下PHP是否在工作

  創建一個名為indexphp的文本文件寫入下面的文本

<?
echo I made it!;
?>

  啟動你的浏覽器並指到localhost你應該在屏幕上得到I made it!

  下面得到和安裝MySQL:

  去下載MySQLWin發行版將zip文件解壓到一個臨時目
錄並且運行安裝程序(setupexe)

  如果你選擇了缺省的典型安裝所有的MySQL文件將會安裝到c:mysql目錄下

  現在跟著以下步驟每一步都要執行正確

  進行一些測試

  首先你要先運行mysqldsharewareexe守護程序它位於c:mysqlbin下你可以看到一個dos窗口
並在幾秒鐘後關閉如果沒有顯示錯誤信息MySQLd就已經運行了

  如果想檢查一下MySQL只要運行c:mysqlbinmysql你將會看到有mysql>提示符的終端窗口
我們可以同MySQL服務器進行對話了

  第二部分 創建和操縱一個MySQL數據庫

  首先我們需要創建要使用的數據庫和表數據庫起名為example表名為tbl有以下字段識別號
姓和信息要通過mysql終端完成建庫和定義表的工作只要雙擊或運行c:mysqlbinmysqlexe

  如果要看在MySQL中已經定義了哪些表可以使用(注意mysql>是終端提示符)

Mysql> show databases; <回車>

  這個命令可能顯示如下信息


++
| Database |
++
| mysql |
| test |
++
rows in set ( sec)

  為了定義一個新的數據庫(example)鍵入

Mysql> create database example; <回車>

  你將會看到一個回答

Query OK row affected ( sec)

  很發我們現在有了一個新數據庫了現在我們可以在庫中建立一個新表但首先我們需要先選中新的
數據庫

Mysql> use example; <回車>

  回答應該是

Database changed

  現在我們可以建表了有如下字段

  索引號 整數
  用戶名 最大長度為的字符串
  用戶姓 最大長度為的字符串
  自由信息 最大長度為的字符串

  在MySQL提示符下鍵入下面的命令來創建表

MySQL> create table tbl (idx integer() UserName varchar() LastName varchar() FreeText varchar());<回車>

  回答應該是

Query OK rows affected ( sec)

  好讓我們看一下從MySQL提示符下看表是什麼樣子的鍵入命令

MySQL> show columns from tbl; <回車>

  我們將得到下面的結果


+++++++
| Field | Type | Null | Key | Default | Extra |
+++++++
| idx | int() | YES | | NULL | |
| UserName | varchar() | YES | | NULL | |
| LastName | varchar() | YES | | NULL | |
| FreeText | varchar() | YES | | NULL | |
+++++++
rows in set ( sec)


  在這裡我們可以看到剛創建的表tbl的內容

  現在讓我們看一下表中有什麼內容鍵入下面的命令

MySQL> select * from tbl;<回車>

  這個命令是用來顯示表tbl中的所有數據的輸出可能是

Empty set ( sec)

  之所以得到這個結果是因為我們還沒有在表中插入任何數據讓我們往表中插入一些數據鍵入

MySQL> insert into tbl values (RafiTonJust a test);<回車>
Query OK row affected ( sec)

  如上所見我們插入到表中的值是按照前面我們定義表的順序因為使用的是缺省的順序我們可以設
定數據的順序語法如下

MySQL> insert into tbl (idxUserNameLastNameFreeText) values (RafiTonJust a test);<回車>

  好現在我們可以再看一下表中的內容

MySQL> select * from tbl;<回車>

  這次的結果是


+++++
| idx | UserName | LastName | FreeText |
+++++
| | Rafi | Ton | Just a test |
+++++
row in set ( sec)

  現在我們可以看到表的結構和每一個單元格的內容

  現在我們想刪除數據為了實現我們應該鍵入

MySQL> delete from tbl where idx= limit ;<回車> Query OK row affected ( sec)

   好給出一些解釋我們正在告訴MySQL從tbl表中刪除記錄刪除那些idx字段值為的記錄並且
只限制刪除一條記錄如果我們不限制刪除記錄數為那麼所有idx為的記錄都將被刪除(在這個例子中
我們只有一條記錄但是雖然如此我只是想讓這一點更加清楚)

  不幸的是我們又一次得到了一個空表所以讓我們再輸進去

MySQL> insert into tbl values (RafiTonJust a test);<回車>
Query OK row affected ( sec)

  另一件可以做的事是修改指定字段的內容使用update命令

MySQL>update tbl set UserName=Berber where UserName=Rafi;<回車>
Query OK row affected ( sec)
Rows matched: Changed: Warnings:

  這個命令將搜索所有UserName為Rafi的記錄並將它改為Berber注意set部分和where部分不一
定要一樣我們可以索搜一個字段但是改變另一個字段而且我們可以執行兩個或更多條件的搜索

MySQL>update tbl set UserName=Rafi where UserName=Berber and LastName=Ton;<回車>
Query OK row affected ( sec)

  這個查詢搜索了兩個字段改變了UserName的值

  第三部分 組合PHP與MySQL

  在這個部分裡我們將建立一個建單的基於PHP的web站點用來控制前面所建的MySQL的表

  我們將建立下面的站點結構(假設你已經知道一些基本的HTML的知識)

   indexphp 用於前端查看表
   addphp 用於往表中插入數據
   Modifyphp 用於修改表中的記錄
   delphp 用於刪除表中的記錄

  首先我們想查看一下數據庫

  看一下下面的腳本


Indexphp:

<html>
<head><title>Web Database Sample Index</title>
</head>
<body bgcolor=#ffffff>
<h>Data from tbl</h>

<?
mysql_connect() or die (Problem connecting to DataBase);
$query = select * from tbl;
$result = mysql_db_query(example $query);

if ($result) {
echo Found these entries in the database:<br><p></p>;
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Domain Name</td>
<td align=center bgcolor=#FFFF>Request Date</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$text = $r[FreeText];

echo <tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>;
}
echo </table>;
}
else
{
echo No data;
}

mysql_free_result($result);
include (linksx);
?>

</body>
</html>
  好下面給出一些說明

  我們先用正常的html標簽創建thml文檔當我們想從html中出來轉入PHP中時我們用<?來打開PHP部分這個告訴web服務器將後面的文本看成是PHP語法而不是一般的html使用?>來結束PHP部分

  mysql_connect() 命令告訴PHP建立一個與MySQL服務器的連接如果連接建立成功腳本將繼續如果
不成功則打印出die命令的信息Problem connecting to Database(如果要看關於mysql_connect的更
多的信息和其它的PHP函數可以下的文檔中查找)

  現在如果MySQL是按照我們上面所討論的那樣安裝的就足夠了但是如果你使用的是預裝的MySQL(象ISP)你應該使用下面的命令

mysql_connect (localhost username password);

  我們可以將$query設成我們想在MySQL中執行的查詢然後使用mysql_db_query命令來執行它

$result = mysql_db_query(example $query);

  這時example表示數據庫的名字並且$query是要進行的查詢

  我們使用MySQL命令select(象上面所描述的)來從表中取得所有的數據

$query = select * from tbl;

  簡單地解釋一下$result的作用如果執行成功函數將返回一個查詢結果的一個MySQL結果標識符
果出錯則返回false返回的不是結果而是一個標識符可以在後面將它轉換成我們所需的信息

  現在我們想檢查一下在數據庫中是否存在有記錄並且如果有則將結果按照html的表格結構打印出來

  為了檢查是否存在數據我們使用if命令和下面的語法

if (argument) {
do something;
} else {
do something different;
}

  這時do something當argument=true時你所要執行的命令do something different為當argument =
false時所要執行的命令

  注意我們使用echo命令來輸出一些html標簽來建立html的表格結構只有從PHP命令輸出的文本才會被
看成html內容 PHP命令本身是不會看成html內容的

  我們使用的另一個命令是while指令使用格式如下

while (argument)) {
something to do;
}

  while循環在argument=true時會不停地重復執行在{}中的指令集

  這裡我們組合了while循環和PHP函數$r=mysql_fetch_array($result)這個函數根據相應的結果標識
符取回一條記錄並且將結果放在一個相關數組(associative array)$r中它使用字段的名字作為數組的
鍵值在我們的腳本中我們將得到一個數組$r[idx]$r[UserName]$r[LastName]和
$r[FreeText]

  我們也可以使用mysql_fetch_row函數它會將結果放在一個有序的數組中我們可以使用$r[]$r[]
$r[]和$r[]來得到相應的值

  要了解關於這些函數的更深入的信息請訪

  現在我們有了所有的信息我們可以把它在html表格中打印出來


echo <tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>;

  現在我們可以釋放MySQL連接並且釋放一些資源通過使用mysql_free_result($result)函數

  PHP另一個有用的特性是在腳本中包括文本文件的功能讓我們假設你有一些可重用的代碼(例如到其
它頁面的鏈接)我們可以使用include函數這樣可以節省一些代碼和時間而且如果想改變這些代碼
我們只需要改變包含文件的內容它將會在所有包括它的文件中生效

  這裡我們創建一個名為Linksx的文本文件它將存放我們想用在每一個頁面中的全部鏈接菜單


<p></p>
<ul>
<li><a >Home</a>
<li><a >Add a new entry to the DataBase</a>
<li><a >Edit an entry</a>
<li><a >Delete an entry from the DataBase</a>
</ul>

  include的語法是

Include (included_text_file);

  現在我們可以用?>來關閉PHP部分並且用</body></html>來結束html頁面

  使用表單增加數據

  讓我們看一下下面的代碼


<html>
<head><title>Add an entry to the database</title>
</head>
<body bgcolor=#ffffff>

<h>Add an entry</h>

<form method=post action=addtblphp>
<table width=% align=center>

<tr><td>Index:</td><td><input type=text name=idx size= maxlength=></td></tr>

<tr><td>UserName:</td><td><input type=text name=UserName size=
maxlength=></td></tr>

<tr><td>LastName:</td><td><input type=text name=LastName size=
maxlength=></td></tr>

<tr><td>FreeText:</td><td><input type=text name=FreeText s= maxlength=></td></tr>

<tr><td></td><td><input type=submit value=add></td></tr>

</form>
</table>

<?php include (linksx);?>

</body>
</html>

  假設你對表單很熟悉這是一個相當簡單的腳本我們根據html頁面設計了一個表單它在提交後調用
addtblphp腳本現在表單與MySQL表相對應由個字段組成index numberFirstNameLastName和
FreeText注意在這個表單中字段名字與MySQL表中字段名一樣但這只是為了方便起見而不是必須

  我們再一次使用了include命令<? include (linksx);?>(象在前面所解釋的)來增加鏈接

  讓我們看一下addtblphp腳本


<html>
<body>

<?
if ($UserName)
{
mysql_connect() or die (Problem connecting to DataBase);
$query = insert into tbl values ($idx$UserName$LastName$FreeText);
$result = mysql_db_query(example $query);

echo Data inserted new table:<br><p></p>;
$query = SELECT * FROM tbl;
$result = mysql_db_query(example $query);

if ($result)
{
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#FFFF>idx</td>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Free Text</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$free = $r[FreeText];

echo <tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$free</td>
</tr>;

} // while循環結束
echo </table>;
}
else
{
echo No data;
} // if結束($result)
}
else
{
echo No UserName Entered Please go back and reenter UserName;
} // if結束($UserName)

echo <p></p>;

include (linksx);

?>

</body>
</html>
解釋

  這一部分包含兩個主要部分第一部分從前一個表單中得到數據並將它們插入到數據庫中第二部分
從數據庫中打印出表的內容第二部分同我在查看數據庫部分中所演示的一樣

  第一部分

  首先我們象通常一樣使用mysql_connect()來同數據庫連接

  然後我們使用下面查詢

$query = insert into tbl values ($idx$$LastName$FreeText);

  這個查詢使用從前面表單傳遞過來的$idx$UserName$LastName和$FreeTExt變量並將它們插入到
tbl表中

  注意我在腳本中所作的注釋使用一個注釋可以用//服務器將忽略此行的後面部分

  簡單不是嗎?

  從數據庫中編輯一條記錄

  讓我們假設一下我們想修改數據庫中存在的記錄在前面我們看到有一個叫set的SQL命令用來設置
數據庫中存在字段的值我們將使用這個命令來修改數據庫中的整條記錄

  考慮下面的腳本

editphp:

<html>
<head><title>Editing an entry from the database</title>
</head>

<body bgcolor=#ffffff>
<h>Edit an entry</h

<?

mysql_connect() or die (Problem connecting to DataBase);
$query = select * from tbl;
$result = mysql_db_query(example $query);

if ($result)
{
echo Found these entries in the database:<br>;
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#ffff>idx</td>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Free Text</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$text = $r[FreeText];

echo <tr>
<td align=center>
<a editingphp?idx=$idx&user=$user&last=$last&text=$text>$idx</a></td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>;

}
echo </table>;
}
else
{
echo No data;
}

mysql_free_result($result);
include (linksx);

?>

</body>
</html>
  如你所見這裡的代碼有些熟悉第一部分只是打印出數據庫中表的內容注意有一行不太一樣

<a editingphp?idx=$idx&user=$user&last=$last&text=$text>$idx</a>

  這一行建立了一個到editingphp的一個鏈接並且給新的腳本傳遞了一些變量同表單方式很象
是使用的是鏈接我們將信息轉換成變量和值注意為了打印出 符號我們需要使用 否則服務器
將把它看成PHP腳本的一部分並且作為被打印的信息

  我們想將數據庫中的記錄全部轉換到過這樣我們就可以得到表中的確切的數據以便我們修改它容易
一些


Editingphp:

<html>
<head><title>Editing an entry</title>
</head>

<body bgcolor=#ffffff>
<h>Editing an entry</h>
<form method=post action=editdbphp>

<table width=% align=center>

<tr><td>idx:</td><td><?php echo $idx;?></td></tr>

<tr><td>UserName:</td><td><input type=text name=UserName size= maxlength=
value=<?php echo $user;?>></td></tr>

<tr><td>LastName:</td><td><input type=text name=LastName size= maxlength=
value=<?php echo $last;?>></td></tr>

<tr><td>Free Text:</td><td><input type=text name=FreeText size= maxlength=
value=<?php echo $text;?>></td></tr>

<tr><td></td><td><input type=submit value=Edit it!></td></tr></table>

<input type=hidden name=idx value=<?php echo $idx;?>>

</form>

<?php include (linksx);?>
</body>
</html>
  好這個腳本很簡單我們要關心的是當表單打印出來時它記錄了當前記錄的數據通過在 <input
type= > 命令中的value屬性這些數據是從前一個頁面傳遞過來的

  現在如果我們不改變記錄的信息它將傳回當前值即缺省值如果我們改變了字段的值字段的值
將變成新的值接著我們可以將新值傳給另一個腳本它將會改變MySQL表中的值


editdbphp:

<?php

mysql_connect() or die (Problem connecting to DataBase);

$query = update tbl set
idx=$idxUserName=$UserNameLastName=$LastNameFreeText=$FreeText where
idx=$idx;

$result = mysql_db_query(example $query);
$query = SELECT * FROM tbl;
$result = mysql_db_query(example $query);

if ($result)
{
echo Found these entries in the database:<br><p></p>;
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#FFFF>idx</td>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Free Text</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$text = $r[FreeText];

echo <tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>;

}
echo </table>;
}
else
{
echo No data;
}

mysql_free_result($result);

include (linksx);

?>
  基本上要關心的一件事情是下面一行

$query = update tbl set idx=$idxUserName=$UserNameLastName=$LastNameFreeText=$FreeText where idx=$idx;

  注意它與我們在前面MySQL部分解釋的語法相同另一件事注意這個腳本改變的是idx=$idx的記錄
如果表中有多條idx等於$idx的記錄所以這些記錄都將被改變如果我們想更嚴格一些我們可以象下面
改動一下where子句

$query = update tbl set idx=$idxUserName=$UserName LastName=$LastNameFreeText=$FreeText where idx=$idx and UserName=$UserName and LastName=$LastName and FreeText=$FreeText;

  這個語法將檢查所有的字段而不僅僅是檢查idx

  從數據庫中刪除一條記錄

  好刪除很容易我們仍然需要兩個腳本一個用來選擇要刪除的記錄(基本上同上面選擇要編輯的記
錄一樣)一個用來真正地進行刪除和打印新的表格


delphp:

<html>
<head><title>Deleting an entry from the database</title>
</head>

<body bgcolor=#ffffff>
<h>Del an entry</h>

<?

mysql_connect() or die (Problem connecting to DataBase);
$query = select * from tbl;
$result = mysql_db_query(example $query);

if ($result)
{
echo Found these entries in the database:<br><p></p>;
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#ffff>idx</td>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Free Text</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$text = $r[FreeText];

echo <tr>
<td align=center>
<a delephp?
idx=$idx&UserName=$user&LastName=$last&FreeText=$text>$idx</a></td>
<td>$user</td>
<td>$last</td>
<td>$dtext</td>
</tr>;

}
echo </table>;
}
else
{
echo No data;
}

mysql_free_result($result);
include (linksx);

?>

</body>
</html>

  這個腳本與我們用過的編輯腳本很象所以可以看一下那裡的說明


delephp:

<?php

mysql_connect() or die (Problem connecting to DataBase);
$query = delete from tbl where idx=$idx and UserName=$UserName and
LastName=$LastName and FreeText=$FreeText;

$result = mysql_db_query(example $query);
$query = SELECT * FROM tbl;
$result = mysql_db_query(example $query);

if ($result)
{
echo Found these entries in the database:<br><p></p>;
echo <table width=% align=center border=><tr>
<td align=center bgcolor=#FFFF>idx</td>
<td align=center bgcolor=#FFFF>User Name</td>
<td align=center bgcolor=#FFFF>Last Name</td>
<td align=center bgcolor=#FFFF>Free Text</td>
</tr>;

while ($r = mysql_fetch_array($result))
{
$idx = $r[idx];
$user = $r[UserName];
$last = $r[LastName];
$text = $r[FreeText];

echo <tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>;

}
echo </table>;
}
else
{
echo No data;
}

mysql_free_result($result);

include (linksx);

?>
  這個腳本看上去很熟悉唯一不同的就是刪除查詢的語法

$query = delete from tbl where idx=$idx and UserName=$UserName and LastName=$LastName and FreeText=$FreeText;

  這個查詢將會刪除所有與前面的腳本傳遞來的信息相配匹的記錄容易吧

  好了這就是全部內容了


From:http://tw.wingwit.com/Article/program/PHP/201311/20851.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.