原文链接:http://www.orlion.ga/1147/

mysqli有面向对象风格和面向过程风格,个人感觉还是用面向对象风格比较好(毕竟是面向对象)

1、mysqli::_construct()

mysqli::__construct ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string$dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

mysqli mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username= ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [,string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

$host、$username、$passwd、$dbname、$port不用多说了,规则与mysql差不多。

2、mysqli::close()

//面向对象风格
bool mysqli::close ( void )
//面向过程风格
bool mysqli_close ( mysqli $link )
成功时返回 TRUE, 或者在失败时返回 FALSE。$link:由mysqli_connect() 或 mysqli_init(void) (该函数提供一个mysqli对象供mysqli_options()和mysqli_real_connect()使用)返回的链接标识。

这个与mysql_close()差别在于mysql_close()可以不提供参数而关闭上一个连接。

3、mysqli::query()

mixed mysqli::query ( string $query [, int $resultmode = MYSQLI_STORE_RESULT ] )

mixed mysqli_query ( mysqli $link , string $query [, int $resultmode = MYSQLI_STORE_RESULT] )

$resultmode有两种取值方式:MYSQLI_USE_RESULT 和MYSQLI_STORE_RESULT(默认值),区别在于MYSQLI_USE_RESULT模式下取结果时每次都要从服务器上取结果而MYSQLI_STORE_RESULT则是将结果一步到位缓存到用户程序空间中。所以当查询结果数据量特别大时用MYSQLI_USE_RESULT,MYSQLI_STORE_RESUL则速度非常快。

返回值:失败时返回 FALSE,通过mysqli_query() 成功执行SELECT, SHOW, DESCRIBE或 EXPLAIN查询会返回一个mysqli_result对象,其他查询则返回TRUE

4、遍历结果函数

// 面向对象风格
mixed mysqli_result::fetch_array ([ int $resulttype = MYSQLI_BOTH ] )
// 面向过程风格
mixed mysqli_fetch_array ( mysqli_result $result [, int $resulttype = MYSQLI_BOTH ] )

例:

$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = $mysqli->query($query); /* numeric array */
$row = $result->fetch_array(MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]); /* associative array */
$row = $result->fetch_array(MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]); /* associative and numeric array */
$row = $result->fetch_array(MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);

类似的函数有:mysqli_result::fetch_assoc和mysqli_result::fetch_row、mysqli_result::fetch_object。

5、释放result函数

// 面向对象风格
void mysqli_result::free ( void )
oid mysqli_result::close ( void )
void mysqli_result::free_result ( void )
// 面向过程风格
void mysqli_free_result ( mysqli_result $result )

6、其他函数

mysqli::real_escape_string(string $sql)转义sql。

一次执行多条sql可以用mysqli对象的multi_query()方法:

bool mysqli::multi_query ( string $query )

传递参数时需要把多条SQL命令写在同一个字符串中作为参数传给multi_query(),多个SQL之间使用分号(;)分隔。如果第一条SQL命令在执行时没有出错,这个方法就会返回TRUE,否则将返回FALSE。

因为multi_query参数中每条SQL都可能返回一个结果,所以处理过程就变成了:

if ($mysqli->multi_query($sql)) {
    do {
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                foreach ($row as $data) {
                    var_dump($data);
                }
            }
            $result->close();
        }
        if ($mysqli->more_results()) {
            echo '----------------';
        }
    } while($mysqli->next_result());
}

php的mysql\mysqli\PDO(二)mysqli的更多相关文章

  1. SQL注入实验,PHP连接数据库,Mysql查看binlog,PreparedStatement,mysqli, PDO

    看到有人说了判断能否sql注入的方法: 简单的在参数后边加一个单引号,就可以快速判断是否可以进行SQL注入,这个百试百灵,如果有漏洞的话,一般会报错. 下面内容参考了这两篇文章 http://blog ...

  2. MySQL原生API、MySQLi面向过程、MySQLi面向对象、PDO操作MySQL

    [转载]http://www.cnblogs.com/52fhy/p/5352304.html 本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对 ...

  3. PDO和MySQLi区别与选择?

    当用PHP访问数据库时,除了PHP自带的数据库驱动,我们一般还有两种比较好的选择:PDO和MySQLi.在实际开发过程中要决定选择哪一种首先要对二者有一个比较全面的了解.本文就针对他们的不同点进行分析 ...

  4. PDO和MySQLi区别和数度;到底用哪个?

    当用PHP访问数据库时,除了PHP自带的数据库驱动,我们一般还有两种比较好的选择:PDO和MySQLi.在实际开发过程中要决定选择哪一种首先要对二者有一个比较全面的了解.本文就针对他们的不同点进行分析 ...

  5. PDO vs. MySQLi 选择哪一个?(PDO vs. MySQLi: Which Should You Use?)-转载

    用Php访问数据的时候,你选择MySQLi和PDO,在选择之前,你应该知道些什么呢? 这篇文章将会介绍这两种方式的不同点,数据库的支持.稳定性.性能等问题. 概述   PDO MySQLi Datab ...

  6. 【小结】有关mysql扩展库和mysqli扩展库的crud操作封装

    现阶段php如果要操作mysql数据库 php给我们提供了3套库 1.mysql扩展库   面向过程操作 2.mysqli扩展库  面向对象操作和面向过程操作并存  安全性和效率高于mysql扩展库 ...

  7. php中数据库连接方式pdo和mysqli对比分析

    1)总的比较   PDO MySQLi 数据库支持 12种不同的数据库支持 支持MySQL API OOP OOP + 过程 Connection Easy Easy 命名参数 支持 不支持 对象映射 ...

  8. PDO和mysqli对比

    PHP中,如何选择PDO和mysqli呢?本文做个简单的比较 1)总的比较   PDO MYSQLI 数据库支持 12种不同的数据库支持 支持MYSQL API OOP OOP和过程 命名参数 支持 ...

  9. PHP 操作MySQL时mysql_connect( )和Mysqli( )的两种报错机制

    刚开始使用PHP连接MySQL数据库的时候,如果数据库连接不成功或者,对MySQL数据库进行增删改查等操作的时候,SQL语句存在错误,而在执行PHP文件的时候,浏览器并不会抛出错误的原因,一般是空白显 ...

随机推荐

  1. 为Python安装pymssql模块来连接SQLServer

    1.安装依赖包 yum install -y gcc python-devel 2.安装freetds 下载地址:http://pan.baidu.com/s/1pLKtFBl tar zxvf fr ...

  2. JavaScript对象状态

    有限状态机(Finite-state machine)是一个非常有用的模型,可以模拟世界上大部分事物. 简单说,它有三个特征: * 状态总数(state)是有限的. * 任一时刻,只处在一种状态之中. ...

  3. PHP 分页函数

    如果如下:

  4. PHP通过加锁实现并发情况下抢码实现

    需求:抢码功能 要求: 1.特定时间段才开放抢码: 2.每个时间段放开的码是有限的: 3.每个码不允许重复: 实现: 1.在不考虑并发的情况下实现: function get_code($len){ ...

  5. 关于js单线程(转载)

    进程和线程都是操作系统的概念.进程是应用程序的执行实例,每一个进程都是由私有的虚拟地址空间.代码.数据和其它系统资源所组成:进程在运行过程中能够申请创建和使用系统资源(如独立的内存区域等),这些资源也 ...

  6. C# 使用access,报错:标准表达式中数据类型不匹配

    最初以为是数字类型造成的,结果最后才发现是日期格式错误,这是我的参数 db.AddInParameter(dbCommand, "savedate", DbType.DateTim ...

  7. 关于UIScrollerView的基本用法和代理

    - (void)viewDidLoad { [super viewDidLoad];  scrollView = [[UIScrollView alloc] initWithFrame:CGRectM ...

  8. 淘宝SDK扒出来的CURL调用含文件上传代码

    <?php function curl($url,$postFields=null){ $ch=curl_init(); curl_setopt($ch,CURLOPT_URL,$url); c ...

  9. jQueryUI Draggable 和 Droppable 配合使用时遇到的两个坑

    jQueryUI 的 拖拽插件极大的方便了开发者对拖拽功能的实现,但是官方教程给的太笼统,在具体实现的时候很多地方不明确,这里说一下我遇到的两个 "小坑": 1:Draggable ...

  10. python基础之day2

    python基本数据类型 1.数字 int(整型)      在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647  在64位系统 ...