使用了php的PEAR和DB
// +----------------------------------------------------------------------+
// | PHP version 4.0
|// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group
|// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,
|// | that is bundled with this package in the file LICENSE, and is
|// | available at through the world-wide-web at
|// | http://www.php.net/license/2_02.txt.
|// | If you did not receive a copy of the PHP license and are unable to
|// | obtain it through the world-wide-web, please send a note to
|// | license@php.net so we can mail you a copy immediately.
|// +----------------------------------------------------------------------+
// | Authors: Christian Stocker
|// +----------------------------------------------------------------------+
//
// $Id: sql2xml.php,v 1.59 2001/11/13 10:54:02 chregu Exp $
/**
* This class takes a PEAR::DB-Result Object, a sql-query-string or an array
* and returns a xml-representation of it.
*
* TODO
* -encoding etc, options for header
* -ERROR CHECKING
*
* Usage example
*
* include_once ("DB.php");
* include_once("XML/sql2xml.php");
* $db = DB::connect("mysql://root@localhost/xmltest");
* $sql2xml = new xml_sql2xml();
* //the next one is only needed, if you need others than the default
* $sql2xml->setEncoding("ISO-8859-1","UTF-8");
* $result = $db->query("select * from bands");
* $xmlstring = $sql2xml->getXML($result);
*
* or
*
* include_once ("DB.php");
* include_once("XML/sql2xml.php");
* $sql2xml = new xml_sql2xml("mysql://root@localhost/xmltest");
* $sql2xml->Add("select * from bands");
* $xmlstring = $sql2xml->getXML();
*
* More documentation and a tutorial/how-to can be found at
* 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
*/
class XML_sql2xml {
/**
* If joined-tables should be output nested.
* Means, if you have joined two or more queries, the later
* specified tables will be nested within the result of the former
* table.
* Works at the moment only with mysql automagically. For other RDBMS
* you have to provide your table-relations by hand (see user_tableinfo)
*
* @var boolean
* @see $user_tableinfo, doSql2Xml(), doArray2Xml();
*/
var $nested = True;
/**
* Name of the tag element for resultsets
*
* @var string
* @see insertNewResult()
*/
var $tagNameResult = "result";
/**
* Name of the tag element for rows
*
* @var string
* @see insertNewRow()
*/
var $tagNameRow = "row";
/**
*
* @var object PEAR::DB
* @access private
*/
var $db = Null;
/**
* Options to be used in extended Classes (for example in sql2xml_ext).
* They are passed with SetOptions as an array (arrary("user_options" = array());
* and can then be accessed with $this->user_options["bla"] from your
* extended classes for additional features.
* This array is not use in this base class, it's only for passing easy parameters
* to extended classes.
*
* @var array
*/
var $user_options = array();
/**
* The DomDocument Object to be used in the whole class
*
* @var object DomDocument
* @access private
*/
var $xmldoc;
/**
* The Root of the domxml object
* I'm not sure, if we need this as a class variable....
* could be replaced by domxml_root($this->xmldoc);
*
* @var object DomNode
* @access private
*/
var $xmlroot;
/**
* This array is used to give the structure of your database to the class.
* It's especially useful, if you don't use mysql, since other RDBMS than
* mysql are not able at the moment to provide the right information about
* your database structure within the query. And if you have more than 2
* tables joined in the sql it's also not possible for mysql to find out
* your real relations.
* The parameters are the same as in fieldInfo from the PEAR::DB and some
* additional ones. Here they come:
* From PEAR::DB->fieldinfo:
*
* $tableInfo[$i]["table"] : the table, which field #$i belongs to.
* for some rdbms/comples queries and with arrays, it's impossible
* to find out to which table the field actually belongs. You can
* specify it here more accurate. Or if you want, that one fields
* belongs to another table, than it actually says (yes, there's
* use for that, see the upcoming tutorial ...)
*
* $tableInfo[$i]["name"] : the name of field #$i. if you want another
* name for the tag, than the query or your array provides, assign
* it here.
*
* Additional info
* $tableInfo["parent_key"][$table] : index of the parent key for $table.
* this is the field, where the programm looks for changes, if this
* field changes, it assumes, that we need a new "rowset" in the
* parent table.
*
* $tableInfo["parent_table"][$table]: name of the parent table for $table.
*
* @var array
* @access private
*/
var $user_tableInfo = array();
/**
* the encoding type, the input from the db has
*/
var $encoding_from = "ISO-8859-1";
/**
* the encoding type, the output in the xml should have
* (note that domxml at the moment only support UTF-8, or at least it looks like)
*/
var $encoding_to = "gb2312";
var $tagname = "tagname";
/**
* Constructor
* The Constructor can take a Pear::DB "data source name" (eg.
* "mysql://user:passwd@localhost/dbname") and will then connect
* to the DB, or a PEAR::DB object link, if you already connected
* the db before.
" If you provide nothing as $dsn, you only can later add stuff with
* a pear::db-resultset or as an array. providing sql-strings will
* not work.
* the $root param is used, if you want to provide another name for your
* root-tag than "root". if you give an empty string (""), there will be no
* root element created here, but only when you add a resultset/array/sql-string.
* And the first tag of this result is used as the root tag.
*
* @param mixed $dsn PEAR::DB "data source name" or object DB object
* @param string $root the name of the xml-doc root element.
* @access public
*/
function XML_sql2xml ($dsn = Null, $root = "root") {
// if it's a string, then it must be a dsn-identifier;
if (is_string($dsn))
{
include_once ("DB.php");
$this->db = DB::Connect($dsn);
if (DB::isError($this->db))
{
print "The given dsn for XML_sql2xml was not valid in file ".__FILE__." at line ".__LINE__."
n";
return new DB_Error($this->db->code,PEAR_ERROR_DIE);
}
}
elseif (is_object($dsn) && DB::isError($dsn))
{
print "The given param for XML_sql2xml was not valid in file ".__FILE__." at line ".__LINE__."
n";
return new DB_Error($dsn->code,PEAR_ERROR_DIE);
}
// if parent class is db_common, then it's already a connected identifier
elseif (get_parent_class($dsn) == "db_common")
{
$this->db = $dsn;
}
$this->xmldoc = domxml_new_xmldoc('1.0');
//oehm, seems not to work, unfortunately.... does anybody know a solution?
$this->xmldoc->encoding = $this->encoding_to;
if ($root) {
$this->xmlroot = $this->xmldoc->add_root($root);
//PHP 4.0.6 had $root->name as tagname, check for that here...
if (!isset($this->xmlroot->{$this->tagname}))
{
$this->tagname = "name";
}
}
}
/**
* General method for adding new resultsets to the xml-object
* Give a sql-query-string, a pear::db_result object or an array as
* input parameter, and the method calls the appropriate method for this
* input and adds this to $this->xmldoc
*
* @param string sql-string, or object db_result, or array
* @param mixed additional parameters for the following functions
* @access public
* @see addResult(), addSql(), addArray(), addXmlFile()
*/
function add ($resultset, $params = Null)
{
// if string, then it's a query, a xml-file or a xml-string...
if (is_string($resultset)) {
if (preg_match("/.xml$/",$resultset)) {
$this->AddXmlFile($resultset,$params);
}
elseif (preg_match("/.*select.*from.*/i" , $resultset)) {
$this->AddSql($resultset);
}
else {
$this->AddXmlString($resultset);
}
}
// if array, then it's an array...
elseif (is_array($resultset)) {
$this->AddArray($resultset);
}
if (get_class($resultset) == "db_result") {
$this->AddResult($resultset);
}
}
/**
* Adds the content of a xml-file to $this->xmldoc, on the same level
* as a normal resultset (mostly just below
*
* @param string filename
* @param mixed xpath either a string with the xpath expression or an array with "xpath"=>xpath expression and "root"=tag/subtag/etc, which are the tags to be inserted before the result
* @access public
* @see doXmlString2Xml()
*/
function addXmlFile($file,$xpath = Null)
{
$fd = fopen( $file, "r" );
$content = fread( $fd, filesize( $file ) );
fclose( $fd );
$this->doXmlString2Xml($content,$xpath);
}
/**
* Adds the content of a xml-string to $this->xmldoc, on the same level
* as a normal resultset (mostly just below
*
* @param string xml
* @param mixed xpath either a string with the xpath expression or an array with "xpath"=>xpath expression and "root"=tag/subtag/etc, which are the tags to be inserted before the result
* @access public
* @see doXmlString2Xml()
*/

本篇文章给大家带来了关于SQL的相关知识,其中主要介绍了SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询的方法,文中通过示例代码介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于SQL server的相关知识,其中主要介绍了SQL SERVER没有自带的解析json函数,需要自建一个函数(表值函数),下面介绍关于SQL Server解析/操作Json格式字段数据的相关资料,希望对大家有帮助。

如何优化sql中的orderBy语句?下面本篇文章给大家介绍一下优化sql中orderBy语句的方法,具有很好的参考价值,希望对大家有所帮助。

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i

本篇文章给大家带来了关于SQL server的相关知识,开窗函数也叫分析函数有两类,一类是聚合开窗函数,一类是排序开窗函数,下面这篇文章主要给大家介绍了关于SQL中开窗函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下。

0x01前言概述小编又在MySQL中发现了一个Double型数据溢出。当我们拿到MySQL里的函数时,小编比较感兴趣的是其中的数学函数,它们也应该包含一些数据类型来保存数值。所以小编就跑去测试看哪些函数会出现溢出错误。然后小编发现,当传递一个大于709的值时,函数exp()就会引起一个溢出错误。mysql>selectexp(709);+-----------------------+|exp(709)|+-----------------------+|8.218407461554972

当某些sql因为不知名原因堵塞时,为了不影响后台服务运行,想要给sql增加执行时间限制,超时后就抛异常,保证后台线程不会因为sql堵塞而堵塞。一、yml全局配置单数据源可以,多数据源时会失效二、java配置类配置成功抛出超时异常。importcom.alibaba.druid.pool.DruidDataSource;importcom.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;importorg.apache.

monacoeditor创建//创建和设置值if(!this.monacoEditor){this.monacoEditor=monaco.editor.create(this._node,{value:value||code,language:language,...options});this.monacoEditor.onDidChangeModelContent(e=>{constvalue=this.monacoEditor.getValue();//使value和其值保持一致i


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Linux new version
SublimeText3 Linux latest version

WebStorm Mac version
Useful JavaScript development tools

Dreamweaver CS6
Visual web development tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Chinese version
Chinese version, very easy to use
