使用了php的PEAR和DB
// -------------------------------- ----------- ---------------------------------------
// | PHP 版本4.0 🎜>|// ----------------------------------- ------ --------------------------------------
// |版權所有(c) 1997, 1998, 1999, 2000, 2001 PHP 小組
|// ---------------------------- ------------------------------------------
// |此來源文件受PHP 許可證2.0 版的約束,
|// |與此包捆綁在文件LICENSE 中,且是 |// | http:/ /www.php.net/license/2_02.txt。
|//|如果您沒有收到PHP 許可證副本並且無法
|// |透過萬維網取得,請留言至
|// | license@php.net,以便我們立即向您立即向您提供建議郵寄一份。
|// -------------------------------------------- ------------ --------------------------
// |作者:克里斯蒂安·斯托克
|// -------------------------------------------------- --------------------- --------------------------
//
// $Id: sql2xml.php,v 1.59 2001/11/13 10:54:02 chregu Exp $
/**
* 此類別採用 PEAR::DB-Result 物件、sql 查詢字串或陣列
* 並傳回它的 xml 表示。
*
* TODO
* -編碼等,標頭選項
* -錯誤檢查
*
* 使用範例
*
* include_on (*"DBce. php");
* include_once("XML /sql2xml.php");
* $db = DB::connect("mysql://root@localhost/xmltest");
* $sql2xml = new xml_sql2xml();
* //只有在您需要預設值以外的其他值時才需要下一個
* $sql2xml->setEncoding("ISO-8859-1","UTF-8" );
* $result = $db- >query("從band 中選擇*");
* $xmlstring = $sql2xml->getXML($result);
*
* 或
*
* include_once (" DB.php");
* include_once("XML/sql2xml.php");
* $sql2xml = new xml_sql2xml("my://root@localhostsql /xmltest");
* $sql2xml ->Add("select * from band");
* $xmlstring = $sql2xml->getXML();
*
* 更多文件和教學/操作方法可在以下位置找到:
* http://php.chregu.tv/sql2xml
*
* @author Christian Stocker
* @version $Id: sql2xml.php,v 1.59 2001/11/13 10:54:02 chregu Exp $
* @package XML
*/
🎜>
/**
* 如果連接表應該巢狀輸出。
* 表示,如果您連接了兩個或多個查詢,則後一個
* 指定的表將前一個
*與mysql 一起使用。其他 RDBMS
* 您必須手動提供表格關係(請參閱 user_tableinfo)
*
* @var lean
var $nested = True ;
/** 🎝>*/ /**
* 行中的標記元素名稱
*
* @var *
* @var
字串* @see insertNewRow()
*/
var $tagNameRow = "row";
>
/**
*
* @var object PEAR::DB
* @access private
*/
var $user_options = array();
/**
* 在擴充類別中所使用的選項(例如在 sql2xml_ext 中)。
* 它們透過SetOptions 作為陣列傳遞(arrary("user_options" = array());
* ,然後可以使用$this->user_options["bla"] 從您的 var $xmlroot;
* 如果您不使用mysql,它特別有用,因為
* mysql 以外的其他RDBMS 目前無法在查詢中提供有關
* 您的資料庫結構的正確資訊。如果您在 sql 中加入了超過 2 個
* 表,那麼 mysql 也不可能找出
* 您的真實關係。
* 參數與 PEAR: 中的 fieldInfo 中的參數相同: DB 和一些
* 其他的。它們來了:
* 來自 PEAR::DB->fieldinfo:
*
* $tableInfo[$i]["table"] * $tableInfo[$i]["table"]
* 與以某些 RDBMS/Comples 查詢與陣列,無法
* 您可以
* 則在此指定較精確。或者,如果您願意,該字段
* 屬於另一張表,而不是實際所說的(是的,有
> *
* $ tableInfo[$i]["name"] :欄位#$i的名稱。若您想要查詢或陣列提供的另一個
* 以標籤名稱,請於此指定
*
*
* 其他資訊
* $tableInfo["parent_key"] [$table] $tableInfo["parent_key"] [$table] :$table 父鍵的索引。
* 這是在其中找出已變更的字段,如果此
* * 父表。
*
* $tableInfo["parent_table"][$table]: $table 的父錶名稱。
*
* @var array
* @access private * 編碼類型,資料庫的輸入有
*/
var $encoding_from = "ISO-8859-1";
/**
* 編碼類型,xml 中的輸出應該有
*(注意 domxml 目前只支援 UTF-8,或至少看起來是這樣)
*/
姓名";
/**
* 建構子
* 建構子可以使用Pear::DB「資料來源名稱」(例如
* 「mysql://user:passwd@localhost/name」),然後連接到資料庫,或PEAR::DB 物件鏈接,如果您之前已經連接過
* 之前的資料庫。
" 如果您沒有提供$dsn 任何內容,則稍後只能使用
* 新增內容pear::db-resultset 或作為陣列提供sql-strings 將 * 如果您想為
* root- 提供另一個名稱,請使用$root 參數。 > * 根元素,但僅當您新增結果集/陣列/sql-string時。 PEAR::DB「資料來源名稱」或物件DB 物件
* @param string $root 名稱xml-doc 根元素。*/
function XML_sql2xml ($dsn = Null, $root = "root") {
如果字符串它必須是dsn 識別碼;
if (is_string( $dsn))
$this->db = DB::Connect ($dsn);
if (DB::isError($ this->db))
print "XML_sql2xml 的給定dsn 在檔案".__FILE__." 的第".__LINE__."
n" 行無效;
return new DB_Error($this->db->code }
elseif (is_object($dsn ) && DB::isError($dsn))
{
🎜> return new DB_Error($dsn-> code,PEAR_ERROR_DIE);
它已經是一個連線識別碼
elseif (get_parent_class($dsn ) == "db_common")
{
$
$this->xmldoc = domxml_new_xmldoc('1.0');
//oehm,但不幸的解決方案似乎知道什麼?
$ this->xmldoc->encoding = $this->encoding_to;
$this->xmlroot = $this->xmldoc->add_root($root );
//PHP 4.0.6 有$root- >name 作為標記名,請在此處檢查...
}))
{
}
}
/**
* 將新結果集新增至xml-object
* 給予sql-query-string、pear::db_result 物件或陣列作為
this > * 輸入的方法,並加到$this->xmldoc
*
* @param 字串sql-str 🎜> * @access public
* @see addResult()、addSql()、addArray( addResult()、addSql()、addArray( */
函數add ($resultset, $params = Null )
{
($resultset)) {
if ( preg_match("/.xml$/",$resultset)) {
> }
elseif (preg_match("/.*select.* from.*/i" , $resultset)) {
else {
$this- > ;AddXmlString($結果集);
}
} $this->AddArray($結果集) ;
}
$this->AddResult($resultset);
}
}
/**
* 將xml 檔案的內容新增至$this->xmldoc,與一般結果集處於相同等級
*(大部分位於
*
* @access public
* @see doXmlString2Xml()
doXmlString2Xml()
doXmlString2Xml()
*/
function addXmlFile($file,$xpath = Null) ;
$content = fread( $fd, filesize( $file ) );
fclose( $f 🎜> }
/**
* 將xml 字串的內容新增至$this->xmldoc,與一般結果集處於相同等級
*(大部分位於
* @param mixed xpath * @param mixed xpath 先前的標籤結果
* @access public
* @see doXmlString2Xml()
doXmlString2Xml()
*/
http://www.bkjia.com/PHPjc/313946.html
www.bkjia.com