zoukankan      html  css  js  c++  java
  • php查询数据集的几种方式(mysql_unbuffered_query()与mysql_query()的区别)

    php操作数据集几种方式

    一、        mysql_unbuffered_query()

    一边查询一边给出结果,不缓存在页面当中,适合大数据处理,使用完成后,就自动销毁数据集.

    1. 不能再使用mysql_data_set($result,count)重新定位数据集中游标的启示位置。
    2. mysql_unbuffered_query查询的结果集中,类似mysql_fetch_array处理过程中,不可以使用mysql_num_rows获取结果集行数。
    3. mysql_unbuffered_query查询的结果集中,类似mysql_fetch_array处理过程完成后,可以使用mysql_num_rows获取结果集行数。
    4. 之后再次操作使用类似mysql_fetch_array的函数操作数据集,将没有数据集行数为0,将不输出。

    二、        mysql_query()

    查询结果出来全部放在缓存里面,实用于数据量小的方便操作。

    1. 类似mysql_fetch_array的函数在操作过程中还是操作完成后,mysql_num_rows都可以获得正确的数据行数。
    2. mysql_data_set($result,count)可以在任意位置操作数据集的下表。
    3. mysqli_free_result($result);清除内存中的查询集后,同mysql_unbuffered_query()。

    demo:

    列子:标红部分为关键比较代码

      1 <?php
      2 
      3  
      4 
      5 /*
      6 
      7  * 连接数据库
      8 
      9  * 固定不变的量,就直接用变量例如$mysql_host,变化的量例如$this->$mysql_dbname,表示当前调用者的dbname
     10 
     11  */
     12 
     13  
     14 
     15 header("Content-Type:text/html;charset=utf-8");
     16 
     17  
     18 
     19  class DbConn{
     20 
     21    
     22 
     23     private $mysql_host;//连接的主机
     24 
     25     private $mysql_user;
     26 
     27     public $mysql_pwd;
     28 
     29     private $mysql_language;//数据库编码语言
     30 
     31     private $mysql_conn;//Mysql连接对象
     32 
     33     private $db_select; //选择的数据库对象
     34 
     35    
     36 
     37     public $mysql_dbname;//选择要连接的数据库
     38 
     39     public $sqlstr;//sql语句
     40 
     41     public $error;//错误信息提示
     42 
     43    
     44 
     45     function DbConn(){
     46 
     47         $this->mysql_host ="localhost";
     48 
     49         $this->mysql_user="root";
     50 
     51         $this->mysql_pwd="sasa";
     52 
     53         $this->mysql_language="UTF8";
     54 
     55         $this->mysql_conn=NULL;
     56 
     57         $this->db_select=NULL;
     58 
     59         $this->sqlstr="";
     60 
     61       
     62 
     63     }
     64 
     65    
     66 
     67     //设置错误信息
     68 
     69     private  function SetError($errormsg)
     70 
     71     {
     72 
     73         $this->error+="</br>"+$errormsg;
     74 
     75     }
     76 
     77    
     78 
     79     public  function ShowError()
     80 
     81     {
     82 
     83         return $this->error;
     84 
     85     }
     86 
     87  
     88 
     89  
     90 
     91     //连接mysql
     92 
     93     public function Connect()
     94 
     95     {
     96 
     97         $this->mysql_conn = mysql_connect($this->mysql_host, $this->mysql_user,$this->mysql_pwd) or die("mysql连接错误"); //mysql连接
     98 
     99         $this->SetError(mysql_error());
    100 
    101         //选择连接的数据库名
    102 
    103         $this->db_select = mysql_select_db($this->mysql_dbname) or die("数据库无权限或数据库选择错误");
    104 
    105         $this->SetError(mysql_error());
    106 
    107         mysql_query("set names 'utf8'"); //编码转化
    108 
    109     }
    110 
    111  
    112 
    113     //关闭连接
    114 
    115     public function CloseCon()
    116 
    117     {
    118 
    119         mysql_close($this->mysql_conn);
    120 
    121     }
    122 
    123    
    124 
    125     //查询方法
    126 
    127     public function SelectAll()
    128 
    129     {
    130 
    131          $result = mysql_query($this->sqlstr,$this->mysql_conn);
    132 
    133         if($result)
    134 
    135         {
    136 
    137         // $result_row = mysqli_fetch_array($result);
    138 
    139         // mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE。
    140 
    141         // mysql_fetch_array() 将返回结果集中的键值或者数组,如果没有更多行则返回 FALSE。
    142 
    143             while($result_row= mysql_fetch_array($result))
    144 
    145             {
    146 
    147                 $userid=$result_row["userid"];
    148 
    149                 $username=$result_row["username"];
    150 
    151                 $userpwd=$result_row["userpwd"];
    152 
    153                 $useremail=$result_row["useremail"];
    154 
    155      
    156 
    157                 echo "<tr>";
    158 
    159                 echo "<td>用户名id:</td><td>$userid</td>";
    160 
    161                 echo "<td>用户名:</td><td>$username</td>";
    162 
    163                 echo "<td>密码:</td><td>$userpwd</td>";
    164 
    165                 echo "<td>邮箱:</td><td>$useremail</td>";
    166 
    167                 echo "</tr>";
    168 
    169                 echo "</br>";
    170 
    171                
    172 
    173                 //mysqli_free_result($result);清除内存中的查询集
    174 
    175             }
    176 
    177         }
    178 
    179     }
    180 
    181    
    182 
    183     //大数据查询验证两种查询数据集的区别
    184 
    185     public function Select()
    186 
    187     {
    188 
    189         //分别取消 mysql_unbuffered_query和mysql_query查看效果
    190 
    191       $result = mysql_unbuffered_query($this->sqlstr,  $this->mysql_conn);
    192 
    193         //$result = mysql_query($this->sqlstr,  $this->mysql_conn);
    194 
    195        
    196 
    197          if($result)
    198 
    199         {
    200 
    201         // $result_row = mysqli_fetch_array($result);
    202 
    203         // mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 FALSE。
    204 
    205         // mysql_fetch_array() 将返回结果集中的键值或者数组,如果没有更多行则返回 FALSE。
    206 
    207             while($result_row= mysql_fetch_array($result))
    208 
    209             {
    210 
    211                 $userid=$result_row["userid"];
    212 
    213                 $username=$result_row["username"];
    214 
    215                 $userpwd=$result_row["userpwd"];
    216 
    217                 $useremail=$result_row["useremail"];
    218 
    219      
    220 
    221                 echo "<tr>";
    222 
    223                 echo "<td>用户名id:</td><td>$userid</td>";
    224 
    225                 echo "<td>用户名:</td><td>$username</td>";
    226 
    227                 echo "<td>密码:</td><td>$userpwd</td>";
    228 
    229                 echo "<td>邮箱:</td><td>$useremail</td>";
    230 
    231                 echo "</tr>";
    232 
    233                 echo "</br>";
    234 
    235                 echo "处理过程中数据集总行数获取:";
    236 
    237                 //mysql_unbuffered_query查询的结果集中,mysql_fetch_array处理过程中,不可以使用mysql_num_rows获取结果集行数
    238 
    239                  echo mysql_num_rows($result);
    240 
    241                  echo "</br>";
    242 
    243               
    244 
    245             }
    246 
    247             mysql_data_seek($result,1);//把指针指向数据集最开始
    248 
    249             //mysql_unbuffered_query查询的结果集中,mysql_fetch_array处理过程完成后,可以使用mysql_num_rows获取结果集行数
    250 
    251             echo "处理完成后,数据集总行数获取:";
    252 
    253             echo mysql_num_rows($result);
    254 
    255             echo "</br>";
    256 
    257            
    258 
    259            
    260 
    261             //再次操作mysql_unbuffered_query查询的结果集,数据集为空不输出
    262 
    263              while($result_row= mysql_fetch_array($result))
    264 
    265             {
    266 
    267                 $userid=$result_row["userid"];
    268 
    269                 $username=$result_row["username"];
    270 
    271                 $userpwd=$result_row["userpwd"];
    272 
    273                 $useremail=$result_row["useremail"];
    274 
    275               
    276 
    277                 echo "<tr>";
    278 
    279                 echo "<td>用户名id:</td><td>$userid</td>";
    280 
    281                 echo "<td>用户名:</td><td>$username</td>";
    282 
    283                 echo "<td>密码:</td><td>$userpwd</td>";
    284 
    285                 echo "<td>邮箱:</td><td>$useremail</td>";
    286 
    287                 echo "</tr>";
    288 
    289                 echo "</br>";
    290 
    291                
    292 
    293                 //mysqli_free_result($result);清除内存中的查询集
    294 
    295             }
    296 
    297              echo "再次处理后行数为:";
    298 
    299               echo mysql_num_rows($result);
    300 
    301                mysql_free_result($result);
    302 
    303          
    304 
    305         }
    306    }
    307   }

    第一次写博客,希望大家多批评指正,另求php操作数据库的优秀框架,我刚从.net转为php很多不懂的,希望能得到更多的信息

  • 相关阅读:
    php 下载保存文件保存到本地的两种实现方法
    MySQL select语句直接导出数据
    Go学习笔记03-附录
    Go学习笔记02-源码
    Go学习笔记01-语言
    Go语言极速入门手册
    最简单的抓取网络图片或音乐文件
    使用PHP生成PDF文档
    Oracle常用函数
    ORACLE常用数值函数、转换函数、字符串函数
  • 原文地址:https://www.cnblogs.com/lasthelloworld/p/4185008.html
Copyright © 2011-2022 走看看