gpt4 book ai didi

PHP将MySQL的查询结果转换为数组并用where拼接的示例

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章PHP将MySQL的查询结果转换为数组并用where拼接的示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

mysql查询结果转换为PHP数组的几种方法的区别:  。

  • $result = mysql_fetch_row():这个函数返回的是数组,数组是以数字作为下标的,你只能通过$result[0],$Result[2]这样的形式来引用。
  • $result = mysql_fetch_assoc():这个函数返回是以字段名为下标的数组,只能通过字段名来引用。$result['field1'].
  • $result = mysql_fetch_array():这个函数返回的是一个混合的数组,既可以通过数字下标来引用,也可以通过字段名来引用。$result[0]或者$result["field1"].
  • $result = mysql_fetch_object():以对象的形式返回结果,可以通过$result->field1这样的形式来引用。

建议使用mysql_fetch_assoc()或者mysql_fetch_array,这两个函数执行速度比较快,同时也可以通过字段名进行引用,比较清楚。  。

where拼接技巧 将where语句从分支移到主干,解决where在分支上的多种情况,分支条件只需and 连接即可如where1==1等 。

?
1
$sql= "SELECT * FROM bb where true " ;

因为使用添加了“1=1”的过滤条件以后数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)以比较此行是否满足过滤条件,当表中数据量比较大的时候查询速度会非常慢。优化方法 test.html 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<td>商品名称:</td>
<td width= "200" ><input type= "text" class = "text" name= "kit_name" id= "fn_kit_name" /></td>
<td align= "right" >备案开始日期:</td>
<td width= "200" ><input type= "text" name= "search[or_get_reg_date]" /><img src= "images/data.jpg" /></td>
<td>备案结束日期:</td>
<td width= "200" ><input type= "text" name= "search[lt_reg_date]" /><img src= "images/data.jpg" /></td>
</tr>
<tr>
   <td>产品经理:</td>
   <td><input type= "text" class = "text" name= "search[managerid]" /></td>
 
<?php
$postData = array (
   'managerid' => '21' ,
   'or_get_reg_date' => '09' ,
   'lt_reg_date' => '2012-12-19' ,
   'in_id' => array (1, 2, 3),
);
$tmpConditions = transArrayTerms( $postData );
echo $whereCause = getWhereSql( $tmpConditions );
// WHERE managerid like '21%' OR reg_date<'09' AND reg_date>'2012-12-19' AND id in ('1','2','3')

处理where条件的sql 。

?
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
52
53
54
55
56
57
58
59
<?php
/**
  * 表单提交值转化成where拼接数组
  */
function transArrayTerms( $infoSearch ) {
   $aryRst = array ();
   $separator = array ( 'lt' => '<' , 'let' => '<=' , 'gt' => '>' , 'get' => '>=' , 'eq' => '=' , 'neq' => '<>' );
   foreach ( $infoSearch as $term => $value ) {
     if ( empty ( $value )) continue ;
 
     $name = $term ;
     if ( strpos ( $term , "or_" ) !== false) { //添加or连接符
       $terms [ 'useOr' ] = true;
       $name = str_replace ( "or_" , "" , $term );
     }
 
     if ( strpos ( $name , "in_" ) !== false) {
       $terms [ 'name' ] = str_replace ( "in_" , "" , $name );
       $terms [ 'charCal' ] = " in " ;
       $terms [ 'value' ] = "('" . implode( "','" , $value ) . "')" ;
     } else {
       $terms [ 'name' ] = $name ;
       $terms [ 'charCal' ] = " like " ;
       $terms [ 'value' ] = "'" . trim( $value ) . "%'" ;
     }
     //放在else后面
     foreach ( $separator as $charCalName => $charCalVal ){
       if ( strpos ( $name , $charCalName . "_" ) !== false) {
         $terms [ 'name' ] = str_replace ( $charCalName . "_" , "" , $name );
         $terms [ 'charCal' ] = $charCalVal ;
         $terms [ 'value' ] = "'" . trim( $value ) . "'" ;
       }
     }
     $aryRst [] = $terms ;
     unset( $terms );
   }
   return $aryRst ;
}
 
function whereOperator( $has_where , $useOr ) {
   $operator = $has_where ? ( $useOr === false ? ' AND ' : ' OR ' ) : ' WHERE ' ;
   return $operator ;
}
 
/**
  * aryTerm transArrayTerms转化后的查询条件
  * @过滤没有输入的sql查询条件并转化成where条件.
  */
function getWhereSql( $aryTerm ) {
   $whereCause = '' ;
   if ( count ( $aryTerm ) > 0) {
     $has_where = '' ;
     foreach ( $aryTerm as $value ) {
       $has_where = whereOperator( $has_where , isset( $value [ 'useOr' ]));
       $whereCause .= $has_where . $value [ 'name' ] . $value [ 'charCal' ] . $value [ 'value' ];
     }
   }
   return $whereCause ;
}

最后此篇关于PHP将MySQL的查询结果转换为数组并用where拼接的示例的文章就讲到这里了,如果你想了解更多关于PHP将MySQL的查询结果转换为数组并用where拼接的示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com