drupal是用数据库来存网站内容的,不像静态页那样直接是html文件,Drupal 7 数据库API增加了一些新的功能让语法更加清晰,使用也更加方便。它还能使用查询生成器来构造查询对象的能力,无需在代码中写原始的SQL语句,一是提高了代码可阅读性,二是兼容所有数据库。下面就列罗出一些经常使用的技巧,可能不够全面,还请大家多多补充。
1. 单表查询(最基本使用方法)
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/>$result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'contact'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'c'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">) </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//选择表contact,名一个别名c<br/></span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fields</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'c'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">) </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//查询c表中的字段,后面不跟参数就是查询所有<br></span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">() </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//执行操作<br></span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fetchAssoc</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//处理结果集<br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
2. 条件查询(condition)
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/> $result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'node'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)<br/> -></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fields</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)<br> -></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">5</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'='</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">) </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//nid等于5的条件<br> </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'status'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">0</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'>'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">) </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//
状态大于0,也就是为真等于1<br> </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'uid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,
array(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">1</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">5</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">7</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">),</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'IN'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">) </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//使用IN操作,当然还可以使用
NOT IN<br> </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">()<br> -></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fetchAssoc</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">();<br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
3. 联合查询(Join)
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/>$query </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'field_data_field_slide'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'f'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//主表<br/><br/></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">join</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'node'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fa.entity_id
= n.nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">// 联合node表,条件是nid<br><br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'f.field_slide_channel_tid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$chanid</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'='</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br><br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n.status'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'1'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'='</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//发布状态<br><br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fields</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,array(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//查询nid<br><br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">orderBy</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n.nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'DESC'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//排序条件<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">range</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">0</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">4</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//取得4条数据<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">();<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
4.添加字段(addField)
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/> $query </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'taxonomy_term_hierarchy'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'h'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//选择表<br/> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">join</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'taxonomy_term_data'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'d'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'h.tid
= d.tid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">// 联合查询<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">addField</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'d'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'tid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//
添加字段<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'h.parent'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">0</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//
添加条件where <br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'d.vid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$vid</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//
再添加一个条件 and ....<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">addTag</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'ditusearch_generate_path'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//
添加Tag 可选项,这个就是方便其他地方可以改变这 个查询$query 比如如果添加了tag 可以使用 hook_query_alter 对其进行查询 如果你使用过views开发,views 也可以了类似的hook<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$tid </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">()-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fetchCol</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">();<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
5.分页使用(pager)
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/> $query </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'node'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)<br/> -></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'type'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'article'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)<br> -></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fields</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">extend</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'PagerDefault'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">limit</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">2</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//limit条件是分页数目<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">();<br> foreach(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">as </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$res</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">){<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$output </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">.= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$res</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">title</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">;<br> }<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$output </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">.= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">theme</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">‘pager’</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//添加分页theme<br> </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">Return </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$output</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">; <br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
6.多表联合分页
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><?php<br/> $query </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">db_select</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'field_data_field_news'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fa'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">)-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">extend</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'PagerDefault'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); </span><span style="margin:0px; padding:0px; color:rgb(255,128,0)">//多表联合查询extend条件必须放在db_select之后<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">join</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'node'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fa.entity_id
= n.nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">join</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'field_data_field_news_date_sort'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fb'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">, </span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fa.entity_id
= fb.entity_id'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">fields</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,
array(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'nid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'title'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">));<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fa.field_news_classify_tid'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$tids</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'in'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); <br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n.type'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'news'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'='</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); <br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">condition</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'n.status'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'1'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'='</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">); <br><br></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">orderBy</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'fb.field_news_date_sort_value'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">,</span><span style="margin:0px; padding:0px; color:rgb(221,0,0)">'DESC'</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">limit</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">(</span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">14</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">);<br><br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$result </span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">= </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">$query</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">-></span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">execute</span><span style="margin:0px; padding:0px; color:rgb(0,119,0)">();<br> </span><span style="margin:0px; padding:0px; color:rgb(0,0,187)">?></span></span>
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><br></span></span>
<span style="margin:0px; padding:0px; color:rgb(0,0,0)"><span style="margin:0px; padding:0px; color:rgb(0,0,187)"><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">function </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">_module_name_autocomplete</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$string</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">)
{<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$matches </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">= array();<br> <br> </span><span style="font-family:monospace; font-size:14px; color:rgb(255,128,0)">// Some fantasy DB table which holds cities<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$query </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">= </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">db_select</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'cities'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">, </span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'c'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">);<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(255,128,0)">// Select rows that match the string<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$return </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">= </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$query<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">-></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">fields</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'c'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">,
array(</span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'city'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">))<br> -></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">condition</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'c.city'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">, </span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'%' </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">. </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">db_like</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$string</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">)
. </span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'%'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">, </span><span style="font-family:monospace; font-size:14px; color:rgb(221,0,0)">'LIKE'</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">)<br> -></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">range</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">0</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">, </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">10</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">)<br> -></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">execute</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">();<br> <br> </span><span style="font-family:monospace; font-size:14px; color:rgb(255,128,0)">// add matches to $matches <br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">foreach (</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$return </span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">as </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$row</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">)
{<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$matches</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">[</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$row</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">-></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">city</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">]
= </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">check_plain</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$row</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">-></span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">city</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">);<br> }<br> <br> </span><span style="font-family:monospace; font-size:14px; color:rgb(255,128,0)">// return for JS<br> </span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">drupal_json_output</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">(</span><span style="font-family:monospace; font-size:14px; color:rgb(0,0,187)">$matches</span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">); </span><span style="font-family:monospace; font-size:14px; color:rgb(255,128,0)">//--json格式返回<br></span><span style="font-family:monospace; font-size:14px; color:rgb(0,119,0)">}</span></span></span>