澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站:列转行的Sql语句计算,P

2019-06-01 作者:数据库网络   |   浏览(151)

初稿地址:http://www.maomao365.com/?p=7307

多行转字符串

本条相比轻松,用||或concat函数能够完结

 SQL Code 

1
2

  

select concat(id,username) str from app_user
select id||username str from app_user

如下所示:

Python少校字典调换为XML以及相关的命名空间分析,pythonxml

就算 xml.etree.ElementTree 库经常用来做深入分析职业,其实它也得以创立XML文书档案。 比如,考虑如下那一个函数:

from xml.etree.ElementTree import Element

def dict_to_xml(tag, d):
'''
Turn a simple dict of key/value pairs into XML
'''
elem = Element(tag)
for key, val in d.items():
  child = Element(key)
  child.text = str(val)
  elem.append(child)
return elem

下边是一个行使例子:

>>> s = { 'name': 'GOOG', 'shares': 100, 'price':490.1 }
>>> e = dict_to_xml('stock', s)
>>> e
<Element 'stock' at 0x1004b64c8>
>>>

改造结果是三个 Element 实例。对于I/O操作,使用 xml.etree.ElementTree 中的 tostring() 函数很轻巧就会将它转变来二个字节字符串。举例:

>>> from xml.etree.ElementTree import tostring
>>> tostring(e)
b'<stock><price>490.1</price><shares>100</shares><name>GOOG</name></stock>'
>>>

万一你想给某些成分增多属性值,能够选用 set() 方法:

>>> e.set('_id','1234')
>>> tostring(e)
b'<stock _id="1234"><price>490.1</price><shares>100</shares><name>GOOG</name>
</stock>'
>>>

只要您还想维持成分的逐条,能够设想构造贰个 OrderedDict 来顶替多少个一般的字典。当创造XML的时候,你被限定只可以构造字符串类型的值。比如:

def dict_to_xml_str(tag, d):
  '''
  Turn a simple dict of key/value pairs into XML
  '''
  parts = ['<{}>'.format(tag)]
  for key, val in d.items():
    parts.append('<{0}>{1}</{0}>'.format(key,val))
  parts.append('</{}>'.format(tag))
  return ''.join(parts)

难题是壹旦你手动的去构造的时候大概会碰着一些麻烦。举个例子,当字典的值中包蕴部分特殊字符的时候会怎样呢?

>>> d = { 'name' : '<spam>' }

>>> # String creation
>>> dict_to_xml_str('item',d)
'<item><name><spam></name></item>'

>>> # Proper XML creation
>>> e = dict_to_xml('item',d)
>>> tostring(e)
b'<item><name><spam></name></item>'
>>>

留神到程序的前面那几个例子中,字符 ‘<' 和 ‘>' 被替换来了 < 和 >

上边仅供参考,假设您须要手动去更改这个字符, 能够利用 xml.sax.saxutils 中的 escape() 和 unescape() 函数。比如:

>>> from xml.sax.saxutils import escape, unescape
>>> escape('<spam>')
'<spam>'
>>> unescape(_)
'<spam>'
>>>

除去能成立正确的出口外,还会有别的三个原因推荐你创立 Element 实例而不是字符串, 那就是运用字符串组合结构三个更加大的文书档案并不是那么轻巧。 而 Element 实例能够毫无思量剖析XML文本的图景下通过八种主意被拍卖。 也正是说,你能够在一个尖端数据结构上到位你具有的操作,并在结尾以字符串的情势将其出口。

运用命名空间解析XML文书档案
假若您分析那么些文书档案并进行平常的询问,你会发掘那几个并不是那么轻松,因为具备手续都变得一定的麻烦。

>>> # Some queries that work
>>> doc.findtext('author')
'David Beazley'
>>> doc.find('content')
<Element 'content' at 0x100776ec0>
>>> # A query involving a namespace (doesn't work)
>>> doc.find('content/html')
>>> # Works if fully qualified
>>> doc.find('content/{http://www.w3.org/1999/xhtml}html')
<Element '{http://www.w3.org/1999/xhtml}html' at 0x1007767e0>
>>> # Doesn't work
>>> doc.findtext('content/{http://www.w3.org/1999/xhtml}html/head/title')
>>> # Fully qualified
>>> doc.findtext('content/{http://www.w3.org/1999/xhtml}html/'
... '{http://www.w3.org/1999/xhtml}head/{http://www.w3.org/1999/xhtml}title')
'Hello World'
>>>

您能够透过将命名空间管理逻辑包装为2个工具类来简化这几个进度:

class XMLNamespaces:
  def __init__(self, **kwargs):
    self.namespaces = {}
    for name, uri in kwargs.items():
      self.register(name, uri)
  def register(self, name, uri):
    self.namespaces[name] = '{' uri '}'
  def __call__(self, path):
    return path.format_map(self.namespaces)

经过上边包车型客车秘技采纳这些类:

>>> ns = XMLNamespaces(html='http://www.w3.org/1999/xhtml')
>>> doc.find(ns('content/{html}html'))
<Element '{http://www.w3.org/1999/xhtml}html' at 0x1007767e0>
>>> doc.findtext(ns('content/{html}html/{html}head/{html}title'))
'Hello World'
>>>

讨论
剖判含有命名空间的XML文书档案会相比麻烦。 上边的 XMLNamespaces 仅仅是同意你使用缩略名替代完整的U中华VI将其变得稍微简洁一点。

很倒霉的是,在着力的 ElementTree 深入分析中尚无别的渠道获得命名空间的新闻。 然则,借使您接纳 iterparse() 函数的话就能够猎取越多关于命名空间管理范围的新闻。比如:

>>> from xml.etree.ElementTree import iterparse
>>> for evt, elem in iterparse('ns2.xml', ('end', 'start-ns', 'end-ns')):
... print(evt, elem)
...
end <Element 'author' at 0x10110de10>
start-ns ('', 'http://www.w3.org/1999/xhtml')
end <Element '{http://www.w3.org/1999/xhtml}title' at 0x1011131b0>
end <Element '{http://www.w3.org/1999/xhtml}head' at 0x1011130a8>
end <Element '{http://www.w3.org/1999/xhtml}h1' at 0x101113310>
end <Element '{http://www.w3.org/1999/xhtml}body' at 0x101113260>
end <Element '{http://www.w3.org/1999/xhtml}html' at 0x10110df70>
end-ns None
end <Element 'content' at 0x10110de68>
end <Element 'top' at 0x10110dd60>
>>> elem # This is the topmost element
<Element 'top' at 0x10110dd60>
>>>

末段一点,固然您要拍卖的XML文本除了要选拔到别的高级XML天性外,还要采用到命名空间, 提议你Infiniti是利用 lxml 函数库来替代 ElementTree 。 譬喻,lxml 对接纳DTD验证文档、越来越好的XPath帮忙和一些别的高等XML特性等都提供了越来越好的支撑。 这一小节其实只是教你什么样让XML解析稍微轻巧一点。

尽管 xml.etree.ElementTree 库日常用来做分析专门的职业,其实它也足以创设XML文书档案。 比如,...

 Ajax技艺正是使用javascript和xml达成异步交互的遵守。

摘要:

字符串转多列

实际正是拆分字符串的标题,能够运用 substr、instr、regexp_substr函数格局

复制代码 代码如下:

第3先来介绍一下Ajax相关知识点,如若这个你都会的话,请直接跳转到封装ajax框架!(代码篇)

   从前分割字符串时,都施用类似split函数的主意管理,下文分享一种对有规律的字符串的相间格局,

字符串转多行

行使union all函数等艺术

  usleep() 函数延迟代码实施多少阿秒。
  unpack() 函数从二进制字符串对数据开始展览解包。
  uniqid() 函数基于以飞秒计的最近时间,生成1个唯一的 ID。
  time_sleep_until() 函数延迟代码施行直到钦赐的时间。
  PHP五常用函数之time_nanosleep() 函数延迟代码实施多少秒和阿秒。
  sleep() 函数延迟代码实行多少秒。
  show_source() 函数对文件实行语法高亮展现。
  strip_whitespace() 函数再次回到已去除 PHP 注释以及空白字符的源代码文件。
  pack() 函数把数据装入2个二进制字符串。
  ignore_user_abort() 函数设置与客户机断开是不是会停下脚本的进行。
  highlight_string() 函数对字符串实行语法高亮突显。
  highlight_file() 函数对文本进行语法高亮呈现。
  PHP五常用函数之get_browser() 函数重回用户浏览器的性质。
  exit() 函数输出一条音讯,并退出当前剧本。
  eval() 函数把字符串依照 PHP 代码来计量。
  die() 函数输出一条音信,并退出当前剧本。
  defined() 函数检查某常量是或不是存在。
  define() 函数定义一个常量。
  constant() 函数重临常量的值。
  PHP5常用函数之connection_status() 函数重返当前的连天情状。
  connection_aborted() 函数检查是否断开客户机。
  zip_read() 函数读取展开的 zip 档案中的下2个文书。
  zip_open() 函数张开 ZIP 文件以供读取。
  zip_entry_read() 函数从打开的 zip 档案项目中获得内容。
  zip_entry_open() 函数张开三个 ZIP 档案项目以供读取。
  PHP5常用函数之zip_entry_name() 函数再次来到 zip 档案项目的称号。
  zip_entry_filesize() 函数重临 zip 档案项指标原始大小(在减小在此以前)。
  zip_entry_compressionmethod() 函数重回 zip 档案项目标削减方法。
  zip_entry_compressedsize() 函数再次回到 zip 档案项指标压缩文件尺寸。
  zip_entry_close() 函数关闭由 zip_entry_open() 函数打开的 zip 档案文件。
  zip_close() 函数关闭由 zip_open() 函数张开的 zip 档案文件。
  xml_set_unparsed_entity_decl_handler() 函数规定在蒙受不可能分析的实业名称(NDATA)表明时被调用的函数。
  xml_set_processing_instruction_handler() 函数规定当分析器在 XML 文档中找随处理指令时所调用的函数。
  xml_set_object() 函数允许在目的中接纳 XML 分析器。
  PHP伍常用函数之xml_set_notation_decl_handler() 函数规定当分析器在 XML 文书档案中找到符号注脚时被调用的函数。
  xml_set_external_entity_ref_handler() 函数规定当解析器在 XML 文书档案中找到外部实体时被调用的函数。
  xml_set_element_handler() 函数组建发轫和甘休成分管理器。
  xml_set_default_handler() 函数为 XML 分析器建构私下认可的数据管理器。
  xml_set_character_data_handler() 函数组建字符数据处理器。
  xml_parser_set_option() 函数为 XML 深入分析器举办精选设置。
  xml_parser_get_option() 函数从 XML 分析器获取选项设置音信。
  xml_parser_free() 函数释放 XML 深入分析器。
  PHP5常用函数之xml_parser_create() 函数创设 XML 分析器。
  xml_parser_create_ns() 函数创设带有命名空间支撑的 XML 分析器。
  xml_parse_into_struct() 函数把 XML 数据分析到数组中。
  xml_parse() 函数深入分析 XML 文档。
  xml_get_error_code() 函数获取 XML 分析器错误代码。
  xml_get_current_line_number() 函数获取 XML 深入分析器的当下行号。
  xml_get_current_column_number() 函数获取 XML 分析器的近日列号。
  PHP五常用函数之xml_get_current_byte_index() 函数获取 XML 分析器的此时此刻字节索引。
  xml_error_string() 函数获取 XML 解析器的失实描述。
  utf8_encode() 函数把 ISO-885玖-一 字符串编码为 UTF-8。
  utf8_decode() 函数把 UTF-捌 字符串解码为 ISO-885玖-一。
  wordwrap() 函数依照钦定长度对字符串进行折行管理。
  vsprintf() 函数把格式化字符串写入变量中。
  vprintf() 函数输出格式化的字符串。
  vfprintf() 函数把格式化的字符串写到钦定的输出流。
  PHP伍常用函数之ucwords() 函数把字符串中种种单词的首字符转变为大写。
  ucfirst() 函数把字符串中的首字符转换为大写。
  trim() 函数从字符串的两端删除空白字符和其余预约义字符。
  substr_replace() 函数把字符串的一片段替换为另三个字符串。
  substr_count() 函数计算子串在字符串中冒出的次数。
  substr_compare() 函数从钦命的开始长度比较多个字符串。
  substr() 函数再次回到字符串的壹局地。
  strtr() 函数转变字符串中一定的字符。
  strtoupper() 函数把字符串调换为大写。
  strtolower() 函数把字符串调换为小写。
  PHP5常用函数之strtok() 函数把字符串分割为越来越小的字符串。
  strstr() 函数搜索1个字符串在另一个字符串中的第一回出现。
  strspn() 函数再次回到在字符串中富含的特定字符的数额。
  strrpos() 函数查找字符串在另2个字符串中最终一次出现的岗位。
  strripos() 函数查找字符串在另2个字符串中最终一次现身的岗位。
  strrev() 函数反转字符串。
  strrchr() 函数查找字符串在另二个字符串中最后一遍面世的地点,并再次来到从该地点到字符串结尾的装有字符。
  strpos() 函数重回字符串在另三个字符串中第三遍出现的岗位。
  PHP5常用函数之strpbrk() 函数在字符串中搜寻钦点字符中的肆意2个。
  strncmp() 函数比较三个字符串。
  strncasecmp() 函数相比较八个字符串。
  strnatcmp() 函数使用一种“自然”算法来对比三个字符串。
  strnatcasecmp() 函数使用1种“自然”算法来相比三个字符串。
  strlen() 函数再次来到字符串的长度。
  stristr() 函数查找字符串在另几个字符串中首先次出现的职位。
  stripos() 函数再次来到字符串在另叁个字符串中率先次出现的职位。
  stripslashes() 函数删除由 addslashes() 函数加多的反斜杠。
  stripcslashes() 函数删除由 addcslashes() 函数增加的反斜杠。
  strip_tags() 函数剥去 HTML、XML 以及 PHP 的价签。
  strcspn() 函数重临在找到其余钦定的字符在此之前,在字符串查找的字符数。
  PHP五常用函数之strcoll() 函数相比较五个字符串。
  strcmp() 函数相比较五个字符串。
  strchr() 函数搜索3个字符串在另八个字符串中的第叁次现身。
  strcasecmp() 函数相比多少个字符串。
  str_word_count() 函数总结字符串中的单词数。
  str_split() 函数把字符串分割到数组中。
  str_shuffle() 函数随机地打乱字符串中的全体字符。
  str_rot13() 函数对字符串实行 ROT一三 编码。
  str_replace() 函数使用一个字符串替换字符串中的另一部分字符。
  str_repeat() 函数把字符串重复钦命的次数。
  str_pad() 函数把字符串填充为钦定的长度。
  str_ireplace() 函数使用2个字符串替换字符串中的另1部分字符。
  PHP5常用函数之sscanf() 函数依据内定的格式解析来自多少个字符串的输入。
  sprintf() 函数把格式化的字符串写写入1个变量中。
  soundex() 函数总括字符串的 soundex 键。
  similar_text() 函数总结八个字符串的合营字符的多少。
  sha1_file() 函数总括文件的 SHA-1 散列。
  sha壹() 函数计算字符串的 SHA-壹 散列。
  setlocale() 函数设置地区新闻(地域消息)。
  PHP伍常用函数之rtrim() P rtrim() 函数

一、Ajax对象的创立

   即:1.选择replace函数,将字符串形成合规的xml格式串

wm_concat函数

第二让大家来探视那一个玄妙的函数wm_concat(列名),该函数能够把列值以","号分隔起来,并展现成1行,接下去上例子,看看这么些神奇的函数怎样行使打算测试数据

 SQL Code 

1
2
3
4
5
6

  

create table test(id number,name varchar2(20));
insert into test values(1,'a');
insert into test values(1,'b');
insert into test values(1,'c');
insert into test values(2,'d');
insert into test values(2,'e');

你也许感兴趣的稿子:

  • PHP实行linux命令常用函数汇总
  • PHP中的一些常用函数搜罗
  • 特别实用的PHP常用函数汇总
  • PHP 正则表明式常用函数
  • ThinkPHP字符串函数及常用函数汇总
  • PHP常用函数和大面积疑难难题解答
  • 听别人讲PHP中的常用函数回想
  • 依赖php常用函数总括(数组,字符串,时间,文件操作)
  • 依照PHP常用函数的用法详解
  • PHP 查找字符串常用函数介绍
  • PHP中的MYSQL常用函数(php下操作数据库必备)
  • 馆内藏品的PHP常用函数 推荐收存
  • PHP开辟进度中常用函数收藏
  • PHP 正则表明式常用函数使用小结
  • PHP 常用函数库和部分实用小技能
  • PHP常用函数小本领
  • 接二连三收藏一些PHP常用函数
  • PHP常用函数计算(180四个)

1、创造Ajax对象的主意

a、第二种艺术是本着IE浏览器

澳门新萄京官方网站 1

b、第三种办法针对w三c:在IE的高版本(IE8 ),已经扶助了XMLHttpRequest类

澳门新萄京官方网站 2

       二.使用xml.value的点子获取钦命的字符串音讯

效用一 : 行转列 ,暗中同意逗号隔绝

 SQL Code 

1

  

select wm_concat(name) name from test;

   

澳门新萄京官方网站 3

二、消除包容性

a、创设公共文件 public.js

澳门新萄京官方网站 4

b、在必要动用ajax对象的页面中,包蕴以上js文件

澳门新萄京官方网站 5

    如下所示:

职能二: 把结果里的逗号替换来"|"

 SQL Code 

1

  

select replace(wm_concat(name),',','|') from test;

   

澳门新萄京官方网站 6

贰、ajax对象的相干部家属性和方法

方法:

1、初始化ajax对象 open(method,url)

   method:请求格局 get、post

   url:请求地址

二、设置请求头音讯setRequestHeader(header,value)

  header:请求头的称呼

  value:请求头的音讯

3、最头阵送请求 send(content)

  唯有当ajax对象的send方法被调用时,才会发送请求

  content :post请求时所传递的数额,get请求时这里平昔设置为null

属性:

一、当ajax对象状态码发生变动时所接触的回调函数:onreadystatechange

  它的值是2个函数首地址(无名氏函数)

  xhr.onreadystatechange = function(){}

二、ajax对象的状态码(1个数字,从0-4): readyState

 澳门新萄京官方网站 7澳门新萄京官方网站 8

3、ajax对象吸取到的响应状态码(常用)(200、302、404):status

肆、ajax对象摄取到的http响应状态文本(临时用):statusText

五、ajax对象吸取到http响应中央字符串(text/html):responseText

六、ajax对象抽取到的http响应中心内容(text/xml):responseXML

    实验情状:sqlserver 二〇〇八 GL450二  

作用三: 按ID分组合并name

 SQL Code 

1

  

select id,wm_concat(name) name from test group by id;

   

澳门新萄京官方网站 9

sql语句等同于上面包车型大巴sql语句:

  SQL Code 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

  

-------- 适用范围:8i,9i,10g及以后版本  ( MAX   DECODE )
select id,
       max(decode(rn, 1, name, null)) ||
       max(decode(rn, 2, ',' || name, null)) ||
       max(decode(rn, 3, ',' || name, null)) str
  from (select id,
               name,
               row_number() over(partition by id order by name) as rn
          from test) t
 group by id
 order by 1;
-------- 适用范围:8i,9i,10g及以后版本 ( ROW_NUMBER   LEAD )
select id, str
  from (select id,
               row_number() over(partition by id order by name) as rn,
               name || lead(',' || name, 1) over(partition by id order by name) ||
               lead(',' || name, 2) over(partition by id order by name) || 
               lead(',' || name, 3) over(partition by id order by name) as str
          from test)
 where rn = 1
 order by 1;
-------- 适用范围:10g及以后版本 ( MODEL )
select id, substr(str, 2) str
  from test model return updated rows partition by(id) dimension by(row_number() 
  over(partition by id order by name) as rn) measures(cast(name as varchar2(20)) as str) 
  rules upsert iterate(3) until(presentv(str [ iteration_number   2 ], 1, 0) = 0)
  (str [ 0 ] = str [ 0 ] || ',' || str [ iteration_number   1 ])
 order by 1;
-------- 适用范围:8i,9i,10g及以后版本 ( MAX   DECODE )
select t.id id, max(substr(sys_connect_by_path(t.name, ','), 2)) str
  from (select id, name, row_number() over(partition by id order by name) rn
          from test) t
 start with rn = 1
connect by rn = prior rn   1
       and id = prior id
 group by t.id;

   

三、发送GET请求

--例:
-----获取下面字符串中中括号中的内容
-----我们可以将下列规则的字符串采用replace替换为XML格式的字符串,然后采用xml select获取相关信息
DECLARE @stringInfo   VARCHAR(MAX) ='1:[猫猫小屋],2:[字符串分割],3:[sql教程博客]'
      , @q VARCHAR(3)   =3;  ---获取第三个分割符中的信息

declare @xmlInfo xml ;

set @stringInfo = '<xmlInfo keyId ="' @stringInfo;
set @stringInfo = REPLACE(@stringInfo, '[', '" value="');
set @stringInfo = REPLACE(@stringInfo, '],', '" /><xmlInfo keyId ="');
set @stringInfo = REPLACE(@stringInfo, ']', '" />');
set @stringInfo = REPLACE(@stringInfo, ':', '');

set @xmlInfo = CONVERT(xml,@stringInfo); 


SELECT @xmlInfo as [xmlInfo],
@xmlInfo.value('(/xmlInfo[@keyId=sql:variable("@q")]/@value)[1]',
 'varchar(60)');

懒人增添用法:

案例: 自己要写多个视图,类似"create or replace view as select 字段一,...字段50 from tablename" ,基表有50多少个字段,要是靠手工业写太辛勤了,有未有如何简便的点子? 当然有了,看本身只要应用wm_concat来让那一个供给变简单,假使自个儿的APP_USE凯雷德表中有(id,username,password,age)几个字段。查询结果如下

 SQL Code 

1
2
3
4
5

  

/** 这里的表名默认区分大小写 */
select 'create or replace view as select ' || wm_concat(column_name) ||
       ' from APP_USER' sqlStr
  from user_tab_columns
 where table_name = 'APP_USER';

   

澳门新萄京官方网站 10

利用系统表方式查询

 SQL Code 

1

  

select * from user_tab_columns

一、 向服务器发送用户名,并回到hello,zhangsan

澳门新萄京官方网站 11

php代码如下:
return:返回,将结果返回给php程序本身
echo:输出,利用http协议将数据响应给客户端

上面代码不足之处:
a、如果将请求地址改为一个不存在的页面地址,那么服务器仍然会返回一个错误信息,而我们的程序应该在得到一个正确的返回结果后才去对数据进行处理。

澳门新萄京官方网站 12

 

Oracle 1一g 行列互换 pivot 和 unpivot 表达

在Oracle 1壹g中,Oracle 又扩大了3个查询:pivot(行转列) 和unpivot(列转行)

参考:)

google 一下,英特网有一篇相比详细的文书档案:

二、消除IE缓存难点(将劳动器端的PHP略做修改)

澳门新萄京官方网站 13

在IE下,仍然输出hello,zhangsan、其他浏览器中是正常输出
原因:在IE中,默认有缓存功能,将每次获取的php文件的输出结果缓存下来,下次ajax对象请求时,如果在缓存目录下,找到对应缓存文件,就直接使用缓存文件。

解决方式:

a、在url后面加随机数:Math,random( );

  var URL = "demo.php?name=zhangsan&n=" Math.random();

b、在url后面加(毫秒)时间戳:new Date().getTime();

  var URL = "demo.php?name=lisi&n=" new Date().getTime();

以上两种方法确保每次请求的url是唯一的。

c、设置ajax对象的请求头,if-modified-since,强制让ajax对象发送请求。
  0:表示文件最后修改时间会和服务器上这个资源文件最后修改时间进行比较,肯定是不同的,所以服务器返回了最新数据

  xhr.setRequestHeader("If-Modified-Since","0");

以上三种方式并没有根本上解决缓存问题,前两种方式更是缓存下来N个文件。

d、设置http响应头中的cache-control选项,告诉浏览器不要缓存,必须每次重新请求

 

pivot 列转行

测试数据 (id,类型名称,发卖数量),案例:遵照水果的体系查询出一条数据展现出每种类型的出售数据。

 SQL Code 

1
2
3
4
5
6
7
8
9

  

create table demo(id int,name varchar(20),nums int);  ---- 创建表
insert into demo values(1, '苹果', 1000);
insert into demo values(2, '苹果', 2000);
insert into demo values(3, '苹果', 4000);
insert into demo values(4, '橘子', 5000);
insert into demo values(5, '橘子', 3000);
insert into demo values(6, '葡萄', 3500);
insert into demo values(7, '芒果', 4200);
insert into demo values(8, '芒果', 5500);

   

澳门新萄京官方网站 14

分组查询 (本来那是不吻合查询一条数据的渴求的)

 SQL Code 

1

  

select name, sum(nums) nums from demo group by name

澳门新萄京官方网站 15

行转列查询

 SQL Code 

1

  

select * from (select name, nums from demo) pivot (sum(nums) for name in ('苹果' 苹果, '橘子', '葡萄', '芒果'));

澳门新萄京官方网站 16

注意: pivot(聚合函数 for 列名 in(类型)) ,当中 in('') 中得以钦点别称,in中仍是可以钦定子查询,比方 select distinct code from customers

自然也足以不选择pivot函数,等同于下列语句,只是代码相比较长,轻便理解

 SQL Code 

1
2
3
4
5

  

select *
  from (select sum(nums) 苹果 from demo where name = '苹果'),
       (select sum(nums) 橘子 from demo where name = '橘子'),
       (select sum(nums) 葡萄 from demo where name = '葡萄'),
       (select sum(nums) 芒果 from demo where name = '芒果');

实例:检查用户名是或不是可用

澳门新萄京官方网站 17澳门新萄京官方网站 18

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>检查用户名是否存在</title>
 6     <script src="jquery-1.12.4.min.js"></script>
 7     <script src="public.js"></script>
 8     <script>
 9         $(function(){
10             //创建ajax对象,此时状态码为0
11             var xhr =creatxhr();
12             $("#name").blur(function () {
13                 var name = $(this).val();
14                 //方法1:随机数
15                 var URL = "demo.php?name=" name "&n=" new Date().getTime();
16                 //初始化ajax对象  此时状态码为1
17                 xhr.open("get",URL);
18                 //ajax对象状态码发生改变时所触发的回调函数
19                 xhr.onreadystatechange = function(){
20                     //状态码为4说明接收完毕,做进一步的处理
21                     if(xhr.readyState == 4 && xhr.status == 200){
22                         if(xhr.responseText == 1){
23                             $(".error").html("用户名已存在").css({display:"inline-block",color:"red"});
24                         }else{
25                             $(".error").css({display:"none"});
26                             return false;
27                         }
28                     }
29                 };
30                 //发送请求,此时状态码为2
31                 xhr.send(null);
32             });
33 
34         })
35     </script>
36 </head>
37 <body>
38 <form>
39     <div class="form-group">
40         <label for="name">用户名:</label>
41         
42         <input type="text" id="name" placeholder="请输入用户名">
43     </div>
44 </form>
45 </body>
46 </html>

证实用户名是不是留存

澳门新萄京官方网站 19澳门新萄京官方网站 20

 1 /**
 2  * Created by 123 on 2017/7/30.
 3  */
 4 //第一种创建ajax对象
 5 function creatxhr(){
 6     var xhr;
 7     var str = window.navigator.userAgent;
 8     //判断是否为IE浏览器,如果是创建相应的ajax对象
 9     if(str.indexOf("MSIE") >0){
10         xhr = new ActiveXObject();
11     }else{
12         xhr = new XMLHttpRequest();
13     }
14     return xhr;
15 }
16 //另外一种创建ajax对象
17 function creatxhr1(){
18     try{return new ActiveXObject();}catch(e){}
19     try{
20         return new XMLHttpRequest();
21     }catch(e){
22         alert("请更换浏览器!");
23     }
24 }

public.js代码

澳门新萄京官方网站 21澳门新萄京官方网站 22

 1 <?php
 2 //禁止客户端缓存数据
 3 header("Cache-Control:no-cache,must-revalidate");
 4     $name = $_GET['name'];
 5     //连接数据库服务器、选择数据库
 6     mysql_connect("localhost","root","111111");
 7     mysql_select_db("shop");
 8     mysql_query("set names gb2312");
 9     //sql语句
10     $sql = "select * from  users where username = '$name'";
11     $result =mysql_query($sql);
12     $num = mysql_num_rows($result);
13     $num大于表示表中已经存在一条记录
14     mysql_close();
15     //根据结果集总行数返回0或1.0表示用户名不存在,1表示用户名已存在
16     if($num > 0){
17         echo 1;
18     }else{
19         echo 0;
20     }
21 ?>

demo.php代码

 

unpivot 行转列

看名称就能想到其意义正是将多列调换到1列中去
案例:近来有1个水果表,记录了五个季度的行销数目,未来要将每个水果的各类季度的行销处境用多行数据呈现。

创制表和数据

 SQL Code 

1
2
3
4
5
6

  

create table Fruit(id int,name varchar(20), Q1 int, Q2 int, Q3 int, Q4 int);
insert into Fruit values(1,'苹果',1000,2000,3300,5000);
insert into Fruit values(2,'橘子',3000,3000,3200,1500);
insert into Fruit values(3,'香蕉',2500,3500,2200,2500);
insert into Fruit values(4,'葡萄',1500,2500,1200,3500);
select * from Fruit

澳门新萄京官方网站 23

列转行查询

 SQL Code 

1

  

select id , name, jidu, xiaoshou from Fruit unpivot (xiaoshou for jidu in (q1, q2, q3, q4) )

留意: unpivot没有聚合函数,xiaoshou、jidu字段也许有时的变量

澳门新萄京官方网站 24

固执己见不接纳unpivot也足以兑现均等的法力,只是sql语句会相当短,而且举办进程效率也不曾前者高

 SQL Code 

1
2
3
4
5
6
7

  

select id, name ,'Q1' jidu, (select q1 from fruit where id=f.id) xiaoshou from Fruit f
union
select id, name ,'Q2' jidu, (select q2 from fruit where id=f.id) xiaoshou from Fruit f
union
select id, name ,'Q3' jidu, (select q3 from fruit where id=f.id) xiaoshou from Fruit f
union
select id, name ,'Q4' jidu, (select q4 from fruit where id=f.id) xiaoshou from Fruit f

 四、发送post请求

XML类型

上述pivot列转行示例中,你早就驾驭了须要查询的类型有怎么样,用in()的秘技包蕴,要是要是你不亮堂都有怎么着值,您怎么营造查询呢?

pivot 操作中的另1个子句 XML 可用来缓和此难点。该子句允许你以 XML 格式创建推行了 pivot 操作的出口,在此输出中,您能够钦点贰个非正规的子句 ANY 而非文字值

躬体力行如下:

 SQL Code 

1
2
3
4
5
6
7

  

select * from (
   select name, nums as "Purchase Frequency"
   from demo t
)                              
pivot xml (
   sum(nums) for name in (any)
)

澳门新萄京官方网站 25澳门新萄京官方网站,

如你所见,列 NAME_XML 是 XMLTYPE,在那之中根元素是 <PivotSet>。每种值以名称-值成分对的款式表示。您能够使用其余 XML 分析器中的输出生成更管用的出口。

澳门新萄京官方网站 26

对于该xml文件的剖判,贴代码如下:

  SQL Code 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51

 

create or replace procedure ljz_pivot_xml_sp(pi_table_name   varchar2,
                                             pi_column_name  varchar2,
                                             pi_create_table varchar2) as
  v_column      nvarchar2(50);
  v_count       number := 0;
  v_i           number;
  v_parent_node nvarchar2(4000);
  v_child_node  nvarchar2(4000);
  v_over        boolean := false;
  v_tmp         nvarchar2(50);
  v_existsnode  number;
  v_sql         clob;
  v_name        varchar2(30);
  v_name_xml    xmltype;
begin
  v_sql         := 'select x.* from ' || pi_table_name ||
                   ' a, xmltable(''/PivotSet'' passing a.' ||
                   pi_column_name || ' columns ';
  v_parent_node := '/PivotSet';
  v_child_node  := 'item[1]/column[2]';
  v_i           := 1;
  execute immediate 'select ' || pi_column_name || ' from ' ||
                    pi_table_name || ' where rownum=1'
    into v_name_xml;
  select existsnode(v_name_xml,
                    '/PivotSet/item[' || to_char(v_i) || ']/column[1]')
    into v_existsnode
    from dual;
  while v_existsnode = 1 loop
    execute immediate 'select substr(extractvalue(' || pi_column_name ||
                      ', ''/PivotSet/item[' || to_char(v_i) || ']/column[1]''),1,30)
    from ' || pi_table_name || ' x'
      into v_name;
    v_sql := v_sql || '"' || v_name || '" varchar2(30) path ''item[' ||
             to_char(v_i) || ']/column[2]'',';
    v_i   := v_i   1;
    select existsnode(v_name_xml,
                      '/PivotSet/item[' || to_char(v_i) || ']/column[1]')
      into v_existsnode
      from dual;
  end loop;
  v_sql := trim(',' from v_sql) || ') x';
  commit;
  select count(1)
    into v_count
    from user_tab_columns
   where table_name = upper(pi_create_table);
  if v_count = 0 then
    execute immediate 'create table ' || pi_create_table || ' as ' || v_sql;
  end if;
end;

 

先是个参数为要深入分析xml文件所属数据表,第二个参数为要深入分析xml所存字段,第多少个参数存放分析后的数额集。

测试:

begin

ljz_pivot_xml_sp('(select * from (select deptno,sal from emp) pivot xml(sum(sal) for deptno in(any)))',

'deptno_xml',

'ljz_pivot_tmp');

end;

澳门新萄京官方网站 27

初学oracle xml深入分析,这种办法相比较死板,二个二个循环列,原型如下:

select extractvalue(name_xml, '/PivotSet/item[1]/column[1]')

from (select * from (select name,nums from demo) pivot xml(sum(nums) for name in(any))) x

where existsnode(name_xml, '/PivotSet/item[1]/column[1]') = 1;

澳门新萄京官方网站 28

select x.*

from (select *

from (select name, nums from demo)

pivot xml(sum(nums)

for name in(any))) a,

xmltable('/PivotSet' passing a.name_xml columns

芒果 varchar2(30) path 'item[1]/column[2]',

苹果 varchar2(30) path 'item[2]/column[2]') x

澳门新萄京官方网站 29

不知是或不是存在直接进行深入分析的艺术,这种办法还比不上直接行列转换,不通过xml转来转去。

select '''' || listagg(substr(name, 1, 30), q'{','}') within group(order by name) || ''''

from (select distinct name from demo);

澳门新萄京官方网站 30

select *

from (select name, nums from demo)

pivot(sum(nums)

for name in('苹果', '橘子', '葡萄', '芒果'));

澳门新萄京官方网站 31

诸如此类拼接字符串反而愈发便宜。

1、get和post的区别

a、get请求将参数放到请求地址url的末端

b、post请求时将参数放在http请求空白行的前边

c、get请求时参数大小有限量

d、post请求理论上对参数大小Infiniti制

e、postt比get安全一些

结论

Pivot 为 SQL 语言增加了三个丰富首要且实用的作用。您能够应用 pivot 函数针对任何关联表创设一个交叉表报表,而不必编写包罗大量 decode 函数的让人费解的、不直观的代码。一样,您可以运用 unpivot 操作调换任何交叉表报表,以常规关系表的样式对其开始展览仓库储存。Pivot 能够转换常规文本或 XML 格式的出口。假如是 XML 格式的出口,您不用钦点 pivot 操作必要探寻的值域。

2、别的差别

post请求时,除了参数格式差别之处,还比get请求多了二个Content-Type的乞请头,它的值是application-form-urlencoded,表示此番交付的数目是字符数据,同期post仍是可以够而且提交二进制数据和字符数据,如:multipart/form-data

ajax发送请求其实便是模拟http请求

ajax对象的post请求也要拉长content-type的请求头

3、代码

a、xhr.open("post","demo.php") post请求  demo.php前面未有参数

b、xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")

  设置请求头音讯:

    content-type:传递数据的数据类型

    application/x-www-form-urlencoded:表示数据是字符数据

澳门新萄京官方网站:列转行的Sql语句计算,Python旅长字典调换为XML以及相关的命名空间解析。c、xhr.send(data);data:会自行将参数放到请求空白行的末端

四、总括多少个数的4则运算

如果想做四则运算的话,上面的代码稍微修改下:

若是须求从服务器重回四个结实,可以将结果拼接1个字符串,使用2个点名的分隔符,如:"|",在客户端程序中,再将字符串依据分隔符进行私分。

伍、文件上传

以post格局提交数据:method=post

点名提交的数额能够是二进制数据或字符数据:enctype="multipart/form-data

连锁代码:

澳门新萄京官方网站 32澳门新萄京官方网站 33

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>文件上传</title>
 6     <script src="jquery-1.12.4.min.js"></script>
 7     <script src="public.js"></script>
 8     <script>
 9         $(function(){
10             function callback(filename){
11                 $("#filename").val(filename);
12                 $("#photo").hide();
13                 $("#up").val("已上传")
14             }
15             var xhr =creatxhr();
16             $("#btn").click(function () {
17                 var username = $("#username").val();
18                 var password = $("#pwd").val();
19                 var photo = $("#filename").val();
20                 var data = "username=" username "&pwd=" password "&photo=" photo;
21                 xhr.open("post","demo.php");
22                 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
23                 //ajax对象状态码发生改变时所触发的回调函数
24                 xhr.onreadystatechange = function(){
25                     if(xhr.readyState == 4 && xhr.status == 200){
26                         $("#photo").show();
27                         $("#up").val("上传文件");
28                         $("#username").val();
29                         $("#pwd").val();
30                         $("#filename").val();
31                         if(xhr.responseText == "1"){
32                             console.log("注册成功");
33                         }else{
34                             console.log("注册失败");
35                         }
36                     }
37                 };
38                 //发送请求,此时状态码为2
39                 xhr.send(data);
40             });
41 
42         })
43     </script>
44 </head>
45 <body>
46 <form method="post" action="upload.php" target="ifm" enctype="multipart/form-data">
47     <div class="form-group">
48         <label for="username">用户名:</label>
49         <input type="text" id="username" placeholder="请输入用户名">
50     </div>
51     <div class="form-group">
52         <label for="pwd">密码:</label>
53         <input type="password" id="pwd" placeholder="请输入密码">
54     </div>
55     <input type="hidden" id="filename">
56     <div class="form-group">
57         <label for="photo">照片:</label>
58         <input type="file" id="photo">
59         <input type="submit" id="up" value="文件上传" name="up">
60     </div>
61     <button id="btn">注册</button>
62 </form>
63 <iframe  name="ifm" style="display: none;"></iframe>
64 </body>
65 </html>

文本上传代码

澳门新萄京官方网站 34澳门新萄京官方网站 35

 1 <?php
 2 //禁止客户端缓存数据
 3 header("Cache-Control:no-cache,must-revalidate");
 4    if(isset($_POST['submit'])){
 5         //获取文件扩展名(jpg、png等)
 6         $extname = strrchr($_FILES['photo']['name'],'.')
 7         //生成新的文件名
 8         $filename = time().$extname;
 9         //文件上传
10         copy($_FILES['tmp_name'],'upload/'.$filename);
11         //如果上传成功的话,$filename返回的是120675321.jpg
12         将js语句输到iframe中,在iframe中执行parent.callback
13         //调用父窗口中的callback函数
14         echo "<script>parent.callback($filename);</script>";
15    }
16 ?>

upload.php代码

澳门新萄京官方网站 36澳门新萄京官方网站 37

 1 <?php
 2 //禁止客户端缓存数据
 3 header("Cache-Control:no-cache,must-revalidate");
 4     $username = $_POST['username'];
 5     $password = $_POST['pwd'];
 6     $photo = $_POST['photo'];
 7     //连接数据库服务器、选择数据库
 8     mysql_connect("localhost","root","111111");
 9     mysql_select_db("shop");
10     mysql_query("set names gb2312");
11     //sql语句
12     $sql = "insert into users (username,password,photo) values("$username","$password","$photo");
13     $result =mysql_query($sql);
14     mysql_close();
15     echo "1";
16 ?>

register.php

无刷新是Ajax技艺最大的特色,但不是Ajax才能出现的指标。

针对登入表明

万1利用古板的web应用程序,用户在签到时,整个页面重新刷新并请求新的页面地址,新的页面在认证之后,再另行跳转回来,不过对用户来说,除了登录页面之外,其余版本未有产生变化。

选用ajax程序,可以异步发送请求,改换的单纯是登6页面,其余版块未有重新请求和刷新,所以节省网络传输的流量,可以高速取得服务器端数据。

伍、利用xml实现数据传输

一、为啥是xml

重假设不留余地从服务器再次来到大量叶影参差的数码。

用户名是还是不是可用  再次回到1/0

回来多个数的和   400

报到是或不是成功  true/false

多少是不是插入成功  true/false

亟待劳务器端重返小量的、单1的数据

比如急需从服务器再次来到大量、复杂的数码,如何落到实处?

xml:服务器端再次来到xml数据

json:服务器端再次来到json数据

2、格式:

a、php解析xml

$dom = new DOMDocument();
$dom->loadXML($str);
$nd=$dom->getElementsByTagName("tagname");
$value = $nd->item(0)->nodeValue;

$xml = simplexml_load_string($str);
$first = $xml->first;
$second = $xml->second;

b、javascript解析xml
要求服务器返回的是text/xml
var xml = xmlHttp.responseXML;
node = xml.getElementsByTagName("tagname");
node[0].chlidNodes[0].nodeValue;

3、完毕多个数的肆则运算:

收获结果后,须要接纳字符串连接成一个xml格式的字符串,如:须求三个根成分,下边子成分,最后是现实的值,连接时也足以利用<<<str创制xml字符串。

输出那几个字符串,默许响应内容类型:text/html,也便是说客户端依旧把代码当做html类实行深入分析,ajax对象的responeXML是不可能获得1个xmldom对象,必须设置响应头类型为text/xml;

澳门新萄京官方网站 38澳门新萄京官方网站 39

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>四则运算</title>
 6     <script src="jquery-1.12.4.min.js"></script>
 7     <script src="public.js"></script>
 8     <script>
 9         $(function(){
10             $("#btn").click(function(){
11                 var firstValue = $("#first").val();
12                 var secondsValue = $("#seconds").val();
13                 var data = "first=" firstValue "&seconds=" secondsValue;//生成参数字符串
14                 //创建ajax对象,此时状态码为0
15                 var xhr =creatxhr();
16                 //初始化ajax对象  此时状态码为1
17                 xhr.open("post","demo.php");
18                 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
19                 //ajax对象状态码发生改变时所触发的回调函数
20                 xhr.onreadystatechange = function(){
21                     //状态码为4说明接收完毕,做进一步的处理
22                     if(xhr.readyState == 4 && xhr.status == 200){
23                        //xml->xmldom对象
24                         var xml = xhr.responseXML;//得到ajax返回的xmldom对象
25                         //xml.getElementsByTagName('jia')[0] 表示获取jia这个元素
26                         //xml.getElementsByTagName('jia')[0].childNodes 表示获取jia元素下的所有子节点
27                         //xml.getElementsByTagName('jia')[0].childNodes[0] 表示获取jia元素下的唯一文本节点。
28                         //xml.getElementsByTagName('jia')[0].childNodes[0].nodeValue 表示获取jia元素下的唯一文本节点的值。
29                         var str =xml.getElementsByTagName('jia')[0].childNodes[0].nodeValue;
30                         var str1 =xml.getElementsByTagName('jian')[0].childNodes[0].nodeValue;
31                         var str2 =xml.getElementsByTagName('cheng')[0].childNodes[0].nodeValue;
32                         var str3 =xml.getElementsByTagName('chu')[0].childNodes[0].nodeValue;
33                     }
34                 };
35                 //发送请求,此时状态码为2
36                 xhr.send(data);
37             })
38         })
39     </script>
40 </head>
41 <body>
42 <form>
43     第一个数:<input type="text" id="first"><br>
44     第二个数:<input type="text" id="seconds"><br>
45     <button id="btn">结果</button>
46     
47 </form>
48 </body>
49 </html>

四则运算代码

澳门新萄京官方网站 40澳门新萄京官方网站 41

 1 <?php
 2 //禁止客户端缓存数据
 3 header("Cache-Control:no-cache,must-revalidate");
 4     $first = $_POST['$first'];
 5     $seconds = $_POST['$seconds'];
 6     $result1 = $first $seconds;
 7     $result2 = $first-$seconds;
 8     $result3 = $first*$seconds;
 9     $result4 = $first/$seconds;
10     //要想返回xml,首先连接一个xml格式的字符串
11     $str="<root>";
12     $str.="<jia>.$result1.</jia>";
13     $str.="<jian>.$result2.</jian>";
14     $str.="<cheng>.$result3.</cheng>";
15     $str.="<chu>.$result4.</chu>";
16     $str.="</root>";
17     header("Content-type:text/xml");
18     echo $str;
19 ?>

四则运算php代码

 肆、在页面加载之后,将goods表中全部数据呈现在报表中。

澳门新萄京官方网站 42

澳门新萄京官方网站 43澳门新萄京官方网站 44

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>把数据显示在表中</title>
 6     <script src="jquery-1.12.4.min.js"></script>
 7     <script src="public.js"></script>
 8     <script>
 9         $(function(){
10                 //创建ajax对象,此时状态码为0
11                 var xhr =creatxhr();
12                 xhr.open("post","table.php");
13                 xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
14                 xhr.onreadystatechange = function(){
15                     if(xhr.readyState == 4 && xhr.status == 200){
16                        //xml->xmldom对象
17                         var xml = xhr.responseXML;//得到ajax返回的xmldom对象
18                         var goods = xml.getElementsByTagName('goods');
19                         var $tr ="<tr></tr>";
20                         for(var i=0;i<goods.length;i  ){
21                             var strName =goods[i].childNodes[0].childNodes[0].nodeValue;
22                             var strPrice =goods[i].childNodes[1].childNodes[0].nodeValue;
23                             var $td0 = "<td>" (i 1) "</td>";
24                             var $td1 = "<td>" strName "</td>";
25                             var $td2 = "<td>" strPrice "</td>";
26                             $tr.append($td0).append($td1).append($td2);
27                             $("#table tbody").append($tr);
28                         }
29                 }
30                 xhr.send(null);
31             }
32         })
33     </script>
34 </head>
35 <body>
36 <table id="table">
37     <tr>
38         <td>编号</td>
39         <td>姓名</td>
40         <td>价格</td>
41     </tr>
42 </table>
43 </body>
44 </html>

把多少浮今后表中

询问goods表中有所数据,连接xml格式的字符串,表中有个别许条数据,xml字符串就有几对goods标签

内部,name字段出现中文,须求打开转码,将gb231二->utf-捌

末尾输出xml字符串

澳门新萄京官方网站 45澳门新萄京官方网站 46

 1 <?php
 2 //禁止客户端缓存数据
 3 header("Cache-Control:no-cache,must-revalidate");
 4     $name = $_GET['name'];
 5     //连接数据库服务器、选择数据库
 6     mysql_connect("localhost","root","111111");
 7     mysql_select_db("shop");
 8     mysql_query("set names utf-8");
 9     //sql语句
10     $sql = "select name,price from  goods order by id desc;
11     $result =mysql_query($sql);
12     //总行数
13     $num = mysql_num_rows($result);
14     mysql_close();
15     $str = "<root>";
16     for($i=0;$i<$num;$i  ){
17         $row = mysql_fetch_assoc($result);
18         $str.="<goods>";
19         $str.="<name>".$row['name']."</name>";
20         $str.="<price>".$row['price']."</price>";
21         $str.="</goods>";
22     }
23     str.="</root>";
24     header("Content-Type:text/xml");
25     echo $str;
26 ?>

多少突显php代码

 6、利用json传输数据

壹、为啥使用json传输数据

xml数据变化过于复杂、xml数据解析过于复杂。

2、关于json介绍

指标是性质的冬季集聚,在js中,能够使用{}模拟那一个集结

语法:var json = {属性名:属性值,属性名:属性值}(属性名能够不加引号,也能够加单引号或双引号);

   var json  = [{ },{ },{ }];

三、用json表示具体的音信

a、表示壹个人的音信

  var person = {name:"zhangsan","age":18}; console.log("姓名:" person.name person.age)

b、表示多人的消息

肆、在php中哪些采用json

a、json编码:json_encode();

b、json解码:json_decode();

 生成json字符串

json代表多量多少,在php中象征八个、大批量的数额足以数组、对象来代表

相当于说在php倘使想生成json字符串,必须从数组、对象上扭转。

解析json字符串:

json_decode函数能够将贰个json格式的字符串实行剖判,个中,那个函数的第二个参数表示深入分析方法。

true:深入分析到数组中

false:分析到指标中

默认为false

澳门新萄京官方网站 47

有关json保存中文的难题

此时此刻,json只协理utf-8,如若想保留中文,必须开展转码。

澳门新萄京官方网站 48

5、JavaScript解析json

即便服务器端再次回到的是字符串,js中要求把字符串转换到json对象。

方法:eval("(" str ")");

var str = xmlHttp.responseText;举例服务器重返的是"{name:'zhangsan',age:30}";

//将字符串转变到json对象

var json = eval("(" str ")");

 澳门新萄京官方网站 49

澳门新萄京官方网站 50澳门新萄京官方网站 51

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>使用json把数据显示在表中</title>
 6     <style>
 7         table{
 8             border-collapse: collapse;
 9             width:300px;
10             height:200px;
11             margin:0 auto;
12             text-align: center;
13         }
14        tr,td{
15            border:1px solid #ccc;
16        }
17     </style>
18     <script src="jquery-1.12.4.min.js"></script>
19     <script src="public.js"></script>
20     <script>
21         $(function(){
22             //创建ajax对象,此时状态码为0
23             var xhr =creatxhr();
24             xhr.open("post","table.php");
25             xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
26             xhr.onreadystatechange = function(){
27                 if(xhr.readyState == 4 && xhr.status == 200){
28                     var value = xhr.responseText;//返回字符串
29                     var $data = eval('(' value ')');//把返回的字符串转换为json对象
30                     var $tr ="<tr></tr>";
31                     for(var i=0;i<$data.length;i  ){
32                         var $td0 = "<td>" (i 1) "</td>";
33                         var $td1 = "<td>" $data[i].name "</td>";
34                         var $td2 = "<td>" $data[i].price "</td>";
35                         $tr.append($td0).append($td1).append($td2);
36                         $("tbody").append($tr);
37                     }
38                 }
39                 xhr.send(null);
40             }
41         })
42     </script>
43 </head>
44 <body>
45 <table>
46     <tr>
47         <td>编号</td>
48         <td>姓名</td>
49         <td>价格</td>
50     </tr>
51     <tr>
52         <td>1</td>
53         <td>苹果</td>
54         <td>5</td>
55     </tr>
56     <tr>
57         <td>2</td>
58         <td>梨子</td>
59         <td>3</td>
60     </tr>
61     <tr>
62         <td>3</td>
63         <td>草莓</td>
64         <td>15</td>
65     </tr>
66 </table>
67 </body>
68 </html>

使用json把数据体未来报表中

澳门新萄京官方网站 52澳门新萄京官方网站 53

 1 <?php
 2     //连接数据库服务器、选择数据库
 3     mysql_connect("localhost","root","111111");
 4     mysql_select_db("shop");
 5     mysql_query("set names utf-8");
 6     //sql语句
 7     $sql = "select name,price from  goods order by id desc;
 8     $result =mysql_query($sql);
 9     //总行数
10     $num = mysql_num_rows($result);
11     $data = array();
12     for($i=0;$i<$num;$i  ){
13         $row = mysql_fetch_assoc($result);
14         $row['name'] = iconv('gb2312','utf-8',$row['name']);
15         $data[] = $row;
16     }
17     //关闭数据库
18      mysql_close();
19     //输出json数据
20     echo json_encode($data);
21 ?>

选用json呈现数据的php代码

php代码表明如下:

$row:1维数组   生成多个json格式的字符串

$data:贰维数组   生成贰个json数组格式的字符串

澳门新萄京官方网站 54

js代码表明如下:

壹种回到的是:"{name:'zhangsan','password':'12345六'}";     eval("(" str ")");

一种回到的是:"[{name:'zhangsan','password':'123456'},{name:'lisi',password:'111111'}]";  eval(str);

 

本文由澳门新萄京官方网站发布于数据库网络,转载请注明出处:澳门新萄京官方网站:列转行的Sql语句计算,P

关键词: