当前位置:   article > 正文

PHP面向对象操作数据库--MySQLI类_php mysqli类

php mysqli类

自学PHP,这几天学到了连接数据库,干脆把MySQLI的API全过一遍吧!

MySQLI
    代表PHP和Mysql数据库之间的一个连接。
    1.mysqli::affected_rows :
        返回影响到数据表的行数
        

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="insert into t_member values('马六','maliu')";
  5. $con->query($sql);
  6. echo $con->affected_rows;
  7. ?>


    2.mysqli::autocommit :
        查看 MySQL 客户端的事务提交方式命令:select @@autocommit;
        修改 MySQL 客户端的事务提交方式为手动提交命令:set @@autocommit = 0;
        关闭自动提交的原因,事务作为一个独立处理最小单元,往往需要处理一系列连续的数据操作,这些操作被视为一个整体,需要同时成功或同时失败,而不能其中某个操作成功;比如:A汇款给B,B接收到歀;即 A的账户扣款,而B的账户增加;必须同时成功或同时失败;如果成功则commit否则整体回滚;只对局部(当前命令行窗口)有效;若全局有效得修改文件;
        
        下面代码如果不加带星号那行代码,则数据不会插入到表中,但会存在缓存里,然后select会从缓存里取结果,结果里会含有刚刚存入缓存里的数据,但是没有插入到表中。如果程序结束而没有commit,数据就不会存入到数据表中;如果加了带星号的那行代码,则不上面事务做任何处理
    

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $con->autocommit(false);
  5. $sql="insert into t_member values('wewwwwww','aliu')";
  6. $con->query($sql);
  7. * $con->rollback();
  8. $sql="select * from t_member";
  9. $result=$con->query($sql);
  10. while($row=$result->fetch_row()){
  11. print_r($row);
  12. }
  13. ?>


    3.mysqli::begin_transaction :
        等同于上一个的功能;
        

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $con->begin_transaction();
  5. $sql="insert into t_member values('b','aliu')";
  6. $con->query($sql);
  7. $con->commit();//此处不可改为autocommit(true),这就是说$con->begin_transaction()不等于将autocommit()的值设为false
  8. ?>


    4.mysqli::change_user;
        改变当前所连接的数据库
        

$con->change_user("root","123456","sys");//转到了sys数据库


    5.mysqli::character_set_name :
        返回当前数据库连接的默认字符编码
    6.mysqli::close :
      

 $con->close();不需要参数,过程化如mysqli_close()需要参数


    7.mysqli::commit()
        提交事务
    8.mysqli::$connect_errno
        返回连接数据库时的错误代码
    9.mysqli::$connect_errno
        返回连接数据库时的错误字符串,即描述信息
    10.mysqli::__construct
        mysqli的构造函数,当new mysqli的构造函数,当new对象的时候,自动调用
    11.mysqli::errno
        返回最近函数调用的错误代码,$con->errno 注意没有括号
    12.mysqli::$error_list
        返回最近函数调用的一系列错误信息,包含错误代码,sqlstate,错误描述,以数组返回,可以利用print_r输出
    13.mysqli::$error
        返回最近函数调用的错误描述信息
    14.mysqli_$field_count
        返回最近查询的列数,注意是列数
    15.mysqli::get_charset
        得到一个含有指定字符集的对象,可以用var_dump()来输出这个对象,因为不是数组所以不能用print_r
    16.mysqli::$client_info
        获取MySQL客户端信息
    17.mysqli::$client_version
        作为一个整数返回MySQL客户端的版本
    18.mysqli::get_connection_stats
        返回客户端连接的统计数据,数组形式
    19.mysqli::$host_info
        返回一个表述使用的连接类型的字符串
    20.mysqli::$protocol_version
        返回MySQL使用的协议版本号
    21.mysqli::init
        初始化 MySQLi 并返回一个资源类型的值,这个值可以作为 mysqli_real_connect() 函数的传入参数,mysqli::real_connect()不需要这种资源类型的值
    22.mysqli::$insert_id
        函数返回最后一个 SQL 语句(通常是 INSERT 语句) 所操作的表中设置为 AUTO_INCREMENT 的列的值。 如果最后一个 SQL 语句不是 INSERT 或者 UPDATE 语句, 或者所操作的表中没有设置为 AUTO_INCREMENT 的列, 返回值为 0。
        Note:

        如果在所执行的 INSERT 或者 UPDATE 语句中使用了数据库函数 LAST_INSERT_ID()。 有可能会影响 mysqli_insert_id() 函数的返回值。
    23.mysqli::kill
         本函数可以用来让服务器杀掉 processid 参数指定的 线程 ID。数据库连接对应的线程 ID 可以通过 调用 mysqli::$thread_id 得到。如果仅仅想中止某个查询,请使用这个 SQL 语句: KILL QUERY processid。
        

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $id=$con->thread_id;
  5. $con->kill($id);
  6. $sql="select * from t_member where name='b'";
  7. $ree=$con->query($sql);
  8. ?>


    24.mysqli::multi_query
        用来一次执行多条语句的函数
      

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member where name='b';";//注意每一条语句都以分号结尾
  5. $sql.="select * from t_member where name='c'";
  6. /* 批量执行查询 */
  7. if ($con->multi_query($sql)) { //判断此函数执行是否成功
  8. do {
  9. /* store first result set */
  10. if ($result = $con->store_result()) { //用来获取多条查询结果中的第一条查询的结果,这个结果非数组和query得到的是一样的 所以还得用mysqli_result中的方法
  11. while ($row = $result->fetch_row()) { //用fetch_row来得到结果集中的第一行,虽然只有一行
  12. printf("%s\n", $row[0]);
  13. }
  14. }
  15. /* print divider */
  16. if ($con->more_results()) {
  17. printf("-----------------\n");
  18. }
  19. } while (@$con->next_result());//为读取下一个结果集作准备
  20. }
  21. ?>


    25.mysqli::more_results
        检查批量查询中是否还有查询结果
    26.mysqli::next_result
        mysqli::multi_query() 函数执行之后, 为读取下一个结果集做准备, 然后可以使用 mysqli::store_result() 或 mysqli::use_result() 函数读取下一个结果集。
    27.mysqli::options
        设置一个连接的扩展选项,这些选项可以改变这个连接的行为。
        如果要对多个选项进行设置,可以多次调用此函数来。
        mysqli::options() 需要在 mysqli::init() 函数之后、 mysqli::real_connect() 函数之前被调用。
      ---------------------------------------------------------------------------------------------------------------
      |    MYSQLI_OPT_CONNECT_TIMEOUT     连接超时设置,以秒为单位(在 Windows 平台上,PHP 5.3.1 之后才支持此选项)。     |
      |    MYSQLI_OPT_LOCAL_INFILE     启用或禁用 LOAD LOCAL INFILE 语句                                                |
      |    MYSQLI_INIT_COMMAND     成功建立 MySQL 连接之后要执行的 SQL 语句                                            |
      |    MYSQLI_READ_DEFAULT_FILE     从指定的文件中读取选项,而不是使用 my.cnf 中的选项                              |
      |    MYSQLI_READ_DEFAULT_GROUP     从 my.cnf 或者 MYSQL_READ_DEFAULT_FILE 指定的文件中 读取指定的组中的选项。      |
      |    MYSQLI_SERVER_PUBLIC_KEY     SHA-256 认证模式下,要使用的 RSA 公钥文件。                                     |
      |    MYSQLI_OPT_NET_CMD_BUFFER_SIZE     内部命令/网络缓冲大小, 仅在 mysqlnd 驱动下有效。                           |
      |    MYSQLI_OPT_NET_READ_BUFFER_SIZE     以字节为单位,读取 MySQL 命令报文时候的块大小, 仅在 mysqlnd 驱动下有效 |
      |    MYSQLI_OPT_INT_AND_FLOAT_NATIVE     将整数和浮点数类型的列转换成 PHP 的数值类型, 仅在 mysqlnd 驱动下有效   |
      |    MYSQLI_OPT_SSL_VERIFY_SERVER_CERT                                                                             |
      ---------------------------------------------------------------------------------------------------------------
        
      

  1. <?php
  2. $mysqli = mysqli_init();
  3. if (!$mysqli) {
  4. die('mysqli_init failed');
  5. }
  6. if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) {
  7. die('Setting MYSQLI_INIT_COMMAND failed');
  8. }
  9. if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) {
  10. die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');
  11. }
  12. if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) {
  13. die('Connect Error (' . mysqli_connect_errno() . ') '
  14. . mysqli_connect_error());
  15. }
  16. echo 'Success... ' . $mysqli->host_info . "\n";
  17. $mysqli->close();
  18. ?>


    28.mysqli::ping
        检查到服务器的连接是否还正常。
        在启用 mysqli.reconnect 选项的前提下, 如果连接已经断开, ping 操作会尝试重新建立连接。
        Note: mysqlnd 驱动会忽略 php.ini 中的 mysqli.reconnect 选项, 所以它不会自动重连。
        客户端建立连接之后,长时间处于闲置状态, 可以用此函数来检查服务器是否关闭了这个连接, 如有必要,将会自动重新建立到服务器的连接。
    29.mysqli::prepare ( string $query )
        做好执行 SQL 语句的准备,返回一个语句句柄,可以对这个句柄进行后续的操作。 这里仅仅支持单一的 SQL 语句,不支持多 SQL 语句。
        在执行语句之前,需要使用 mysqli_stmt::bind_param() 函数 对占位符参数进行绑定。 同样,在获取结果之前,必须使用 mysqli_stmt::bind_result() 函数对返回的列值进行绑定。
        SQL 语句中可以包含一个或者多个问号(?) 表示语句的参数。
        SQL 语句中,仅允许在特定的位置出现问号参数占位符。 例如,在 INSERT 语句中的 VALUES() 子句中可以使用参数占位符,来表示对应列的值。也可以在 WHERE 字句中使用参数来表示 要进行比较的值。
        但是,并不是所有的地方都允许使用参数占位符, 例如对于表名、列名这样的 SQL 语句中的标识位置, 就不可以使用参数占位。 SELECT 语句中的列名就不可以使用参数。 另外,对于 = 这样的逻辑比较操作也不可以在两侧都使用参数, 否则服务器在解析 SQL 的时候就不知道该如何检测参数类型了。 也不可以在 NULL 条件中使用问号, 也就是说不可以写成:? IS NULL。 一般而言,参数也只能用在数据操作(DML)语句中, 不可以用在数据定义(DDL)语句中。
      

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. if($bin=$con->prepare("select * from t_member where name=? and password=?")){//返回一个句柄,必须用一个派一个变量
  5. $name1="c";
  6. $password1="2";
  7. $bin->bind_param("ss",$name1,$password1);//绑定参数,除了第一个参数外不能用直接量,得用变量
  8. $bin->execute();//mysqli_stmt中的执行查询,不像Mysqli中的query返回的是一个对象,而是将查询的结果放在mysql服务器,等待fetch逐条来取,然后相应的绑定再bind_result中的各个变量中
  9. $bin->bind_result($name,$result);//将查询结果的列值绑定到变量,
  10. while($bin->fetch()){//获取查询结果的值
  11. printf("%s %s",$name,$result);
  12. }
  13. $bin->close();// 关于语句对象
  14. }
  15. ?>


        
        
        使用预处理的好处:
        (1)可以通过驱动让服务端缓存查询计划,从而提高查询效率;
        (2)可以防止SQL注入,自动转义一些特殊字符.
        坏处:
        (1)本地到一个连接,以便另一个连接不能再使用
        (2)存储函数中不能使用(存储过程是可以的)
        (3)有可能会导致“泄漏”如果你忘记释放它
    30.mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )
        对数据库执行一次查询
        其后第二个参数默认为MYSQLI_STORE_RESULT,也可以是MYSQLI_USE    _RESULT,他们的区别是    mysql_use_result()的结果必须“一次性用完”,也就是说用它得到一个result后,必须反复用mysql_fetch_row()读取其结果直至该函数返回null为止,否则如果你再次进行mysql查询,会得到“Commands out of sync; you can't run this command now”的错误。        而mysql_store_result()得到result是存下来的,你无需把全部行结果读完,就可以进行另外的查询。比如你进行一个查询,得到一系列记录,再根据这些结果,用一个循环再进行数据库查询,就只能用mysql_store_result()。
        

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";
  5. $re=$con->query($sql,MYSQLI_USE_RESULT);
  6. $row=$re->fetch_row();
  7. printf("%s %s",$row[0],$row[1]);
  8. $sql="select * from t_member";
  9. $re=$con->query($sql,MYSQLI_USE_RESULT);
  10. $row=$re->fetch_row();
  11. printf("%s %s",$row[0],$row[1]);
  12. ?>//这样会报错
  13. <?php
  14. $con=new mysqli("localhost","root","123456");
  15. $con->select_db("mysql");
  16. $sql="select * from t_member";
  17. $re=$con->query($sql);
  18. while($row=$re->fetch_row()){
  19. printf("%s %s",$row[0],$row[1]);
  20. }
  21. ?>//这样则不会


    31.mysqli::real_connect
        建立一个 MySQL 服务器连接
      
    32.mysqli::real_escape_string
        根据当前连接的字符集,对于 SQL 语句中的特殊字符进行转义
        此函数用来对字符串中的特殊字符进行转义, 以使得这个字符串是一个合法的 SQL 语句。 传入的字符串会根据当前连接的字符集进行转义,得到一个编码后的合法的 SQL 语句。
        在调用 mysqli_real_escape_string() 函数之前, 必须先通过调用 mysqli_set_charset() 函数或者在 MySQL 服务器端设置字符集。 更多信息请参考 字符集。
      

  1. <?php
  2. // 假定数据库用户名:root,密码:123456,数据库:RUNOOB
  3. $con=mysqli_connect("localhost","root","123456","mysql");
  4. if (mysqli_connect_errno($con))
  5. {
  6. echo "连接 MySQL 失败: " . mysqli_connect_error();
  7. }
  8. $newname="菜鸟'";
  9. // 没有转义 $newname 中特殊字符,执行失败
  10. //mysqli_query($con,"INSERT into websites2 (name,password) VALUES ('$newname','$newname')");
  11. // 转义特殊字符
  12. $con->real_escape_string($newname);
  13. // 转义后插入,执行成功
  14. $re=$con->query("INSERT into websites2 (name,password) VALUES ('$newname','$newname')");
  15. if(!$re){
  16. echo $con->error;
  17. }
  18. mysqli_close($con);
  19. ?>


    33.mysqli::real_query
        执行一个mysql查询
        返回值是bool值
      

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";;
  5. $re=$con->real_query($sql);
  6. var_dump($re);
  7. ?>


    34.mysqli::refresh
        刷新
    35.mysqli::rollback
        回退当前事务
      

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $con->autocommit(false);
  5. $sql="insert into t_member values('m','m')";
  6. $con->query($sql);
  7. $con->rollback();
  8. $con->autocommit(true);
  9. $con->close();
  10. ?>


    36.mysqli::select_db
        选择用于数据库查询的默认数据库
    37.mysqli::set_charset
        这应该是首选的用于改变字符编码的方法,不建议使用mysqli_query()执行SQL请求的SET NAMES ...(如 SET NAMES utf8)。
    38.mysqli::$sqlstate
        返回一个包含 SQLSTATE 错误码的字符串,表示上一次 SQL 操作的错误。 错误码是由 5 个字符构成,'00000' 表示没有发生错误。 需要注意的是,并不是所有的 MySQL 错误都映射到 SQLSTATE 了, 未映射的错误消息使用 HY000(综合错误)表示。
      

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="CREATE TABLE City (ID INT, Name VARCHAR(30))";
  5. $re=$con->query($sql);
  6. if(!$re){
  7. printf("%s",$con->error);
  8. }
  9. if(!$re){
  10. printf("%s",$con->sqlstate);
  11. }
  12. $con->close();
  13. ?>


    39.mysqli::set_local_infile_default
        取消用户指定的回调函数
    40.mysqli_set_local_infile_handler
        设置 LOAD DATA LOCAL INFILE 命令的回调函数
    41.mysqli::stat
        获取当前系统状态信息
      

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="CREATE TABLE City (ID INT, Name VARCHAR(30))";
  5. $re=$con->query($sql);
  6. printf("%s",$con->stat());
  7. $con->close();
  8. ?>


        输出:Uptime: 105949 Threads: 1 Questions: 11908 Slow queries: 0 Opens: 723 Flush tables: 1 Open tables: 608 Queries per second avg: 0.112
    42.mysqli::stmt_init
        初始化一条语句并返回一个用于mysqli_stmt::prepare(调用)的对象
     

  1. <?php
  2. $con=new MySQLi("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $con->stmt_init();
  5. $sql="select * from t_member";
  6. $pre=$con->prepare($sql);
  7. $pre->execute();
  8. $pre->bind_result($name,$result);
  9. while($row=$pre->fetch())
  10. {
  11. printf("%s %s",$name,$result);
  12. }
  13. ?>


    43.mysqli::store_result
        select语句查询之后的结果是出于缓存区的,转移上一次查询返回的结果集
        
        如果上一查询并不产生结果集(例如,执行了一个 INSERT 语句), 那么 mysqli_store_result() 会返回 FALSE。 如果读取结果集失败了,也会返回 FALSE。 如何区分是上面哪种情况导致此函数的调用返回了 FALSE? 你可以通过下面的方法来检测: mysqli_error() 返回了非空的字符串, mysqli_errno() 返回了非零值, 或者 mysqli_field_count() 返回了非零值, 都表示发生错误了。 还有一种可能的情况会导致此函数的调用返回 FALSE:上一次查询 mysqli_query() 本身是成功的, 但是由于返回的结果集太大,无法为其分配足够的内存来进行结果集转移。 如果 mysqli_field_count() 函数返回了一个非零值,那么表示 SQL 语句产生了一个非空的结果集。
        
        执行查询之后, 使用 mysqli_free_result() 函数来释放结果集所占用的内存, 是一个很有用的实战经验。 尤其是当使用 mysqli_store_result() 函数来转移数量较大的结果集的时候, 释放结果集内存的操作尤为重要。
    44.mysqli::$thread_id
        返回当前连接的线程 ID
         线程 ID 是每次连接都重新分配的,也就是说它和连接是紧密相关的, 如果某个连接异常断开了,然后重新建立了到数据库的连接, 这个线程 ID 就不再是原来的那个了,它会发生变化。可以通过执行 SQL 语句:KILL QUERY processid 来杀掉对应连接上正在执行的 SQL 语句。
    45.mysqli::thread_safe
        返回是否是线程安全的,如果是的话,返回TRUE,否则返回FALSE。
    46.mysqli::$warning_count
        返回最近一次连接所出现的警告条数
    
    
    
    
    
    
    
MySQLI::result
    代表从一个数据库查询中获取的结果集。
    1.mysqli_result::fetch_field
        从结果集中取得列信息并作为对象返回。自动指向下一个字段
            被返回的对象的属性为:

            name - 列名
            table - 该列所在的表名
            max_length - 该列最大长度
            not_null - 1,如果该列不能为 NULL
            primary_key - 1,如果该列是 primary key
            unique_key - 1,如果该列是 unique key
            multiple_key - 1,如果该列是 non-unique key
            numeric - 1,如果该列是 numeric
            blob - 1,如果该列是 BLOB
            type - 该列的类型
            unsigned - 1,如果该列是无符号数
            zerofill - 1,如果该列是 zero-filled
    2.mysqli_result::current_field
        指向取得的结果集中的第一个字段,然后每次循环依次往后值

  

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";
  5. $res=$con->query($sql);
  6. while($col=$res->fetch_field()){
  7. $current=$res->current_field;
  8. printf("col: %d\n", $current);
  9. printf("Name: %s\n", $col->name);
  10. printf("Table: %s\n", $col->table);
  11. printf("max. Len: %d\n", $col->max_length);
  12. printf("Flags: %d\n", $col->flags);
  13. printf("Type: %d\n\n", $col->type);
  14. }
  15. ?>


    3.mysqli_result::data_seek
        将取得的结果集中的指针指向指定的行数,一开始是0
        

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";//注意每一条语句都以分号结尾
  5. $res=$con->query($sql);
  6. $res->data_seek(2);//此处就是将指针指向第2+1行
  7. $re=$res->fetch_row();
  8. printf("%s %s",$re[0],$re[1]);
  9. ?>


    4.mysqli_result::fetch_all([ int $resulttype = MYSQLI_NUM ])
        将结果集转换成数组,参数resulttype有MYSQLI_ASSOC(键值对应不包含数字角标值对应),MYSQLI_NUM(数字角标值对应不包含键值对应),MYSQLI_BOTH(两者都有)
      

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";//注意每一条语句都以分号结尾
  5. $res=$con->query($sql);
  6. /*
  7. $post=$res->fetch_all( MYSQLI_BOTH);
  8. print_r($post);
  9. 结果:Array (
  10. [0] => Array ( [0] => b [name] => b [1] => 5 [password] => 5 )
  11. [1] => Array ( [0] => c [name] => c [1] => 2 [password] => 2 )
  12. [2] => Array ( [0] => j [name] => j [1] => 2 [password] => 2 )
  13. [3] => Array ( [0] => m [name] => m [1] => m [password] => m )
  14. [4] => Array ( [0] => n [name] => n [1] => m [password] => m )
  15. )
  16. */
  17. /*
  18. $post=$res->fetch_all( MYSQLI_ASSOC);
  19. print_r($post);
  20. 结果:Array (
  21. [0] => Array ( [name] => b [password] => 5 )
  22. [1] => Array ( [name] => c [password] => 2 )
  23. [2] => Array ( [name] => j [password] => 2 )
  24. [3] => Array ( [name] => m [password] => m )
  25. [4] => Array ( [name] => n [password] => m )
  26. )
  27. */
  28. /*
  29. $post=$res->fetch_all( MYSQLI_NUM);
  30. print_r($post);
  31. 结果:Array (
  32. [0] => Array ( [0] => b [1] => 5 )
  33. [1] => Array ( [0] => c [1] => 2 )
  34. [2] => Array ( [0] => j [1] => 2 )
  35. [3] => Array ( [0] => m [1] => m )
  36. [4] => Array ( [0] => n [1] => m )
  37. )
  38. */
  39. ?>


    5.mysqli_result::fetch_array
        从结果集中取得一行,作为数组,类型为BOTH,指针指向下一行
        

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";//注意每一条语句都以分号结尾
  5. $res=$con->query($sql);
  6. while($row=$res->fetch_array()){
  7. printf("%s %s",$row[0],$row[1]);
  8. }
  9. ?>


    6.mysqli_result::fetch_assoc
        从结果集中取得一行作为关联数组(键值数组即BOTH中非array的那一半),指针指向下一行
    7.mysqli_result::fetch_fields
        返回结果集中每一行的字段信息,以数组返回;
    8.mysqli_result::fetch_object
        将结果集的一行作为对象返回
    9.mysqli_result::fetch_row
        从结果集中取得一行作为关联数组(键值数组即BOTH中非关联数组的那一半),指针指向下一行
    10.mysqli_result::$field_count
        获取结果中的字段数
    11.mysqli_result::free_result
        从结果集中取得行,然后释放结果内存
      

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";//注意每一条语句都以分号结尾
  5. $res=$con->query($sql);
  6. while($array=$res->fetch_row()){
  7. print_r($array);
  8. }
  9. $res->free_result(); //注意不是$array
  10. ?>


    12.mysqli_result::$num_rows
        获取结果集长度,在不需要转换成数组的情况下
     

  1. <?php
  2. $con=new mysqli("localhost","root","123456");
  3. $con->select_db("mysql");
  4. $sql="select * from t_member";//注意每一条语句都以分号结尾
  5. $res=$con->query($sql);
  6. echo $res->num_rows;
  7. ?>


    
    

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/558098
推荐阅读
相关标签
  

闽ICP备14008679号