PHP/MySQL三日通-第一天(二)

來源:互聯網
上載者:User
 

四、第一個指令碼

 

  如果我告訴您真正難過的一關已經過了,您一定會很高興。軟體的安裝過程總是無法預料,因為系統跟系統之間可以說是千差萬別。不過您運氣不錯,資料庫運行起來,PHP也編譯安裝完畢,Web伺服器也可以正確處理副檔名為.php3的檔案了。

  我們下面就開始正式上路,要寫第一個指令碼程式了。建立一個文字檔,在其中加入下面的內容:

  $#@60;html$#@62;
$#@60;body$#@62;

$#@60;?php
$myvar = "Hello World";
echo $myvar;
?$#@62;

$#@60;/body$#@62;
$#@60;/html$#@62;

  現在,訪問相應的URL,例如,http://myserver/test.php3。您應該可以看到頁面中包含“Hello World”的文字。如果您看到的是錯誤資訊,查一下PHP文檔,看看軟體佈建是否正確無誤。

  就是這樣了!這是您的第一個PHP程式。如果您查看一下這個頁面的HTML原始碼,您會發現裡面只有Hello World 這樣的文字。

  那是因為PHP引擎過濾了檔案內容,對其中的代碼作了處理,轉換成了標準的HTML。

  在上面的程式中您最先注意到的可能是定界符,也就是以$#@60;?php開始的那幾行。這個標記說明後面是PHP代碼,而?$#@62;表示代碼結束。PHP的強大之處在於,這些代碼可以以多種不同方式放在任意位置 - 我是說任意位置。後面我們會看到一些很有趣的例子,現在我們還是從最簡單的開始。如果您願意,也可以設定PHP,讓它使用短標記,$#@60;?和?$#@62;,但這與XML會發生衝突,所以要小心使用。如果您是從ASP轉向PHP,您甚至可以讓PHP使用$#@60;%和%$#@62;作為定界符。

  您還會注意到每行後面的分號。這些分號稱為分隔字元,用於分隔不同的指令。您可以把所有的PHP代碼寫在一行裡,用分隔字元把命令分開。但是那樣看起來很亂,所以我們在每個分號後面都另起一行。記住,每行最後都要以分號結束。

  最後,您會注意到myvar這個字以$符號開頭。這個符號告訴PHP,這是一個變數。我們把“Hello World”賦給變數$myvar。一個變數可以是數字,也可以是數組。不管怎樣,所有的變數都是以$符開頭。 <

  PHP真正強大之處來源於它的函數。函數,基本上是處理指示序列。如果您把所有的選件都編譯進PHP,總共會有超過700個函數。這些函數可以讓您做很多事情。

  現在我們再加進一些MySQL的內容進去。

五、裝載資料庫

  現在,我們要加入MySQL的內容了。要想知道PHP中包含哪些選項,或伺服器方面的一些情況,一種簡便的方法是使用函數phpinfo()。建立一個象下面這樣的程式:

  $#@60;html$#@62;
$#@60;body$#@62;

$#@60;?php
phpinfo();
?$#@62;

$#@60;/body$#@62;
$#@60;/html$#@62;

  儲存這個程式,在瀏覽器中訪問這個檔案。您會看到網頁中包含了一些有趣的、有用的資訊,象這樣。這些資訊是有關伺服器、Web伺服器內部環境變數、PHP中包含的選項,等等。在第一段Extensions中,找到以MySQL開頭的一行。如果沒有找到,那說明MySQL支援選項並沒有編譯進PHP。您可以再檢查一下安裝步驟,查閱一下PHP文檔,看您是否漏掉了什麼。

  如果找到了MySQL那一行,那您可以繼續了。

  從MySQL資料庫中讀取資料之前,我們得先往資料庫裡放一些資料。在現在這一階段,還沒有一個簡便的方法來做這件事情。大多數的PHP程式都帶有一個資料檔案,該檔案包含一些資料來建立並啟用MySQL資料庫。這個過程不在本教程範圍之內,所以讓我來替您做這件事情吧。

  MySQL使用它自己的使用者權限表。在安裝時,會建立一個預設的使用者(root),該使用者是沒有口令的。資料庫管理員可以根據需要來增加使用者並賦予使用者各種不同的許可權,但這項工作完全可以另寫一本書了,所以我們只使用root使用者。如果您自己管理伺服器和資料庫,為root使用者指派一個口令是很重要的。

  總之,我們還是接著說資料庫吧。對Win32使用者來說,很對不起,不過您要在DOS下做些工作。您不得不使用DOS視窗,或者在“執行”視窗中鍵入所有命令。別忘了,輸入命令時要帶上MySQL/bin的目錄名。Unix使用者可以在MySQL的bin目錄下輸入命令,但命令必須以./開頭,才能讓程式運行起來。

  我們要做的第一件事情是實際建立出資料庫。在命令列下,鍵入下列命令:

mysqladmin -u root create mydb

這樣就建立了一個名為“mydb”的資料庫。-u選項告訴MySQL我們使用的是root使用者。

  下一步,我們要加入一些資料,這裡我們用的樣本資料是大家都喜歡用的員工資料庫。我們將會用到我前面提到過的資料檔案。如果您想在這方面多瞭解一些,可以查閱MySQL所帶的手冊或訪問 http://www.turbolift.com/mysql/網站。

  把下面的文字複製到一個檔案中,把該檔案存在MySQL的bin目錄下(我假定檔案名稱是mydb.dump)。

  CREATE TABLE employees ( id tinyint(4) DEFAULT 0 NOT NULL
AUTO_INCREMENT, first varchar(20), last varchar(20),
address varchar(255), position varchar(50), PRIMARY KEY (id),
UNIQUE id (id));INSERT INTO employees VALUES (1,Bob,Smith,
128 Here St, Cityname,Marketing Manager);

INSERT INTO employees VALUES (2,John,Roberts,45 There St ,
Townville,Telephonist);

INSERT INTO employees VALUES (3,Brad,Johnson,1/34 Nowhere Blvd,
Snowston,Doorman);

  如果文字是折行的,請確保每一個INSERT語句都是另起一行的。現在,我們要把資料加入到mydb資料庫中了。在命令列下,鍵入下面的命令:

    mysql -u root mydb $#@60; mydb.dump

  此時您應該不會遇到什麼錯誤。如果真的出錯了,請仔細檢查一下是否因上面的文字折行而引起錯誤。

六、測試

  OK,現在我們已經把資料匯入到資料庫中了。現在我們來處理這些資料。把下面的文字存入一個檔案中,把該檔案存在Web伺服器的文檔目錄下,尾碼名為.php3。

  $#@60;html$#@62;

$#@60;body$#@62;

$#@60;?php

$db = mysql_connect("localhost", "root");

mysql_select_db("mydb",$db);

$result = mysql_query("SELECT * FROM employees",$db);

printf("First Name: %s$#@60;br$#@62;\n", mysql_result($result,0,"first"));

printf("Last Name: %s$#@60;br$#@62;\n", mysql_result($result,0,"last"));

printf("Address: %s$#@60;br$#@62;\n", mysql_result($result,0,"address"));

printf("Position: %s$#@60;br$#@62;\n", mysql_result($result,0,"position"));

?$#@62;

$#@60;/body$#@62;

$#@60;/html$#@62;

  我來解釋一下上面的代碼。mysql_connect()函數負責以指定的使用者名稱(本例中使用者名稱是root)串連到指定機器(在本例中機器是本機localhost)上的MySQL資料庫。如果您想指定使用者口令,您也可以把它送給這個函數。串連的結果儲存在變數$db中。

  隨後,mysql_select_db()函數告訴PHP,我們要讀取的資料庫是mydb。我們可以在程式中同時串連到多台機器上的多個資料庫,但目前我們還是限於串連一個資料庫。

  接下來,mysql_query()函數完成最複雜的部分。利用剛才得到的串連結果標識,該函數把一行SQL語句送給MySQL伺服器去處理。返回的結果儲存在變數$result中。

  最後,mysql_result()函數顯示SQL查詢命令所得到的各個欄位的值。利用變數$result,我們就可以找到第一條記錄,記錄號是0,並將其中各欄位的值顯示出來。

  如果您以前沒用過Perl或C語言,那麼printf函數的文法格式會顯得很奇怪。在上面的每一行程式中,%s代表運算式第二部分中的那個變數(例如,mysql_result($result,0,"position"))應該以字串的形式顯示出來。

  這一課我們就講到這裡了。我們已經成功地編譯、安裝和設定了MySQL和PHP,並且運行了一個簡單的程式來讀取資料庫中的資訊。在第二課裡,我們會做一些更複雜的工作,來顯示多行記錄的資料,甚至與資料庫互相交換資料。

繼續努力吧!



聯繫我們

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