入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

MySQLi基于面向对象的编程

创建时间:2016-02-10 投稿人: 浏览次数:3537

mysqli在windows上,对于PHP 5.3或更新版本,mysqli扩展默认开启,对于PHP 5.0 5.1 5.2,mysqli扩展默认并不会开启,因此php.ini中php_mysqli.dll这个DLL 必须开启。
MySQLi基于面向过程的编程和面向对象的编程是相对的,其中使用到的方法都是可以类比的。

mysqli面向过程的编程:http://blog.csdn.net/koastal/article/details/50650496

连接数据库

header("Content-type:text/html;charset=utf-8");
$mysqli = new mysqli("localhost", "root", "", "test");
if($mysqli->connect_errno){ //连接成功errno应该为0
    die("Connect Error:".$mysqli->connect_error);
}

设置字符编码

$mysqli->set_charset("utf8");

插入记录

$query = "INSERT INTO staff(id,name,job) VALUES("","naruto","保安队长")";
$res = $mysqli->query($query);  //插入成功返回真,插入失败返回假
if($res){
    //插入成功则输出自增主键的id
    echo "AUTO_INCREMENT:".$mysqli->insert_id;
    echo "<hr/>";
    echo "AFFECTED ROWS:".$mysqli->affected_rows;
}else{
    //插入失败则输出错误编号和错误信息
    echo "Error:";
    echo $mysqli->errno.":".$mysqli->error;
}

更新记录

$query = "UPDATE staff SET id = id+10";
$res = $mysqli->query($query);//插入成功返回真,插入失败返回假
if($res){
    //插入成功则输出自增主键的id
    echo "AUTO_INCREMENT:".$mysqli->insert_id;
    echo "<hr/>";
    echo "AFFECTED ROWS:".$mysqli->affected_rows;
}else{
    //插入失败则输出错误编号和错误信息
    echo "Error:";
    echo $mysqli->errno.":".$mysqli->error;
}

删除记录

$query = "DELETE FROM staff WHERE id = 24";
$res = $mysqli->query($query);//插入成功返回真,插入失败返回假
if($res){
    //插入成功则输出自增主键的id
    echo "AUTO_INCREMENT:".$mysqli->insert_id;
    echo "<hr/>";
    echo "AFFECTED ROWS:".$mysqli->affected_rows;
}else{
    //插入失败则输出错误编号和错误信息
    echo "Error:";
    echo $mysqli->errno.":".$mysqli->error;
}

以上的操作都是使用了mysqli类的属性或者方法。
这里写图片描述


然而,对于查询语句,我们取出数据还需要使用mysqli_result类的属性和方法。
这里写图片描述

mysqli_result类用于保存mysqli->query()执行查询操作得到的结果集,可以从结果集中取出数据,不再使用结果集之后要使用mysqli_result->close()语句释放结果集。

查询一条记录

函数名 说明
$mysqli_result->fetch_assoc() 查询到的一条数据以关联数组的形式返回
$mysqli_result->fetch_row() 查询到的一条数据以索引数组的形式返回
$mysqli_result->fetch_object() 查询到的一条数据以对象属性的形式返回
$mysqli_result->fetch_array() 查询到的一条数据以索引数组和关联数组的混合形式返回
$mysqli_result->fetch_array(MYSQLI_BOTH) 查询到的一条数据以索引数组和关联数组的混合形式返回
$mysqli_result->fetch_array(MYSQLI_ASSOC) 查询到的一条数据以关联数组的混合形式返回
$mysqli_result->fetch_array(MYSQLI_ROW) 查询到的一条数据以索引数组的混合形式返回
$query = "SELECT * FROM staff WHERE id = 25";
$mysqli_result = $mysqli->query($query);//获取查询结果集
$row = $mysqli_result->fetch_row(); //使用查询结果集
$mysqli_result->close();    //释放查询结果集
var_dump($row);

查询多条记录

函数名 说明
$mysqli_result->fetch_all() 查询到的所有数据以索引数组和关联数组的混合形式返回
$mysqli_result->fetch_all(MYSQLI_BOTH) 查询到的所有数据以索引数组和关联数组的混合形式返回
$mysqli_result->fetch_all(MYSQLI_ASSOC) 查询到的所有数据以关联数组的混合形式返回
$mysqli_result->fetch_all(MYSQLI_ROW) 查询到的所有数据以索引数组的混合形式返回

一次取出全部数据

$query = "SELECT * FROM staff";
$mysqli_result = $mysqli->query($query);
$rows = $mysqli_result->fetch_all(MYSQLI_ASSOC);
$mysqli_result->close();
echo "共".count($rows)."条记录:";
var_dump($rows);

每次取出一条数据

$query = "SELECT * FROM staff";
$mysqli_result = $mysqli->query($query);
while($row = $mysqli_result->fetch_array(MYSQLI_ASSOC)){
    $rows[] = $row;
};
$mysqli_result->close();
echo "共".count($rows)."条记录:";
var_dump($rows);

关闭连接

$mysqli->close();
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。