我承認(rèn)我不是PHP的領(lǐng)導(dǎo)者。然而,在看了一些PHP的信息之后,我認(rèn)為有一些功能需要添加到其中來處理數(shù)據(jù)庫連接和整合XML。要做到這一點(diǎn),我想我可以創(chuàng)建一個(gè)處理連接MySQL和使用PHP中的domxml功能來提供XML輸出的類。然后我就可以在PHP腳本的任何地方聲明這個(gè)類并且在需要使用它的時(shí)候可以提供XML功能。 我在這篇文章中使用的PHP版本是PHP 4.3.4 for Win32,可以從The PHP Group下載。MySQL的版本是MySQL 4.0.16 for Win32,可以從MySQL.com得到。MySQL的安裝很容易——只要簡單地按照其指令來就可以了。PHP稍微有一點(diǎn)復(fù)雜。 在PHP的下載頁面有兩個(gè)文件:一個(gè)ZIP文件和一個(gè)安裝文件。因?yàn)槲覀冃枰砑覼IP文件中的擴(kuò)展,所以這兩個(gè)文件都要下載。下面是下載之后的所要做的一個(gè)簡單步驟: 1. 使用安裝文件安裝PHP。 2. 解壓iconv.dll,將其放到Windows的系統(tǒng)文件夾中。 3. PHP安裝目錄下創(chuàng)建一個(gè)目錄(默認(rèn)為C:\PHP)“extensions”。 4. 解壓php_domxml.dll文件到這個(gè)目錄。 5. 在Windows文件夾下找到php.ini文件,然后使用記事本或其它文本編輯器打開。在這個(gè)文件中找到“extensions_dir=”,然后將其值修改為第3步設(shè)置的擴(kuò)展文件夾的完整路徑。 6. 找到“;extension=php_domxml.dll”,刪除本行開頭的分號。 7.重新啟動(dòng)Web服務(wù)器。 然后在你的Web目錄下使用下面的代碼創(chuàng)建一個(gè)PHP頁面“test.php”。(這段代碼在運(yùn)行IIS 5.0的Windows 2000 SP3能夠正常運(yùn)行。) <?php $myxml = new CMySqlXML("localhost", "test_user", "password", "test"); echo $myxml->run_sql_return_xml("SELECT * FROM users"); classCMySqlXML { var $host; var $user; var $password; var $db; functionCMySqlXML($host, $user, $password, $db) { $this->host = $host; $this->user = $user; $this->password = $password; $this->db = $db; } functionrun_sql_return_xml($sql_string) { $connection = mysql_connect($this->host, $this->user, $this->password, $this->db); mysql_select_db($this->db); $result = mysql_query($sql_string); $doc = domxml_open_mem("<root/>"); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $num_fields = mysql_num_fields($result); $row_element = $doc->create_element(mysql_field_table($result, 0)); $doc_root = $doc->document_element(); $row_element = $doc_root->append_child($row_element); for ($i = 0; $i < $num_fields; $i++) { $field_name = mysql_field_name($result, $i); $col_element = $doc->create_element($field_name); $col_element = $row_element->append_child($col_element); $text_node = $doc->create_text_node($row[$field_name]); $col_element->append_child($text_node); } } mysql_free_result($result); mysql_close($connection); return $doc->dump_mem(false); } } 該類提供的唯一的一個(gè)方法是run_sql_return_xml()。它接受一個(gè)SQL查詢字符串參數(shù)。當(dāng)這個(gè)方法執(zhí)行的時(shí)候,它創(chuàng)建一個(gè)到MySQL數(shù)據(jù)庫的連接并選擇數(shù)據(jù)庫。查詢字符串被執(zhí)行,結(jié)果存儲到變量$result中。使用domxml_open_mem()函數(shù)創(chuàng)建一個(gè)新的DOMDocument對象。然后,代碼開始循環(huán)結(jié)果集中的所有記錄。對于每一條記錄,添加一個(gè)與結(jié)果集的表同名的行元素到DOMDocument文檔元素中。然后為每個(gè)字段添加一個(gè)元素到行元素中,元素名為字段名。最后,一個(gè)文本節(jié)點(diǎn)被添加到每個(gè)字段節(jié)點(diǎn),節(jié)點(diǎn)的值為該字段的值。 在循環(huán)所有行之后,代碼釋放結(jié)果集并關(guān)閉連接。產(chǎn)生的DOMDocument XML從函數(shù)中返回。 在PHP頁面的開始處你會(huì)看到CMySqlXML對象被實(shí)例化,run_sql_return_xml()方法被調(diào)用。這個(gè)方法的返回值被返回給客戶。domxml功能除了PHP函數(shù)命名約定之外都遵守DOM規(guī)范。 如果需要更多有關(guān)DOM規(guī)范的信息,可以訪問W3C的站點(diǎn)。而更多domxml的信息則可以從The PHP Group找到,在這里你可以下載不同格式的文檔。
|
溫馨提示:喜歡本站的話,請收藏一下本站!