mysqli面向对象的使用①
一、创建、选择、设置和断开mysql连接
1、创建一个mysqli的对象
$_mysqli=new mysqli();
2、连接MySql使用的主机、用户名、密码和数据库名、使用端口号
$_mysqli->connect($host,$username,$password,$db_name,$port=3306);
把第一步和第二步结合,直接创建一个带连接参数的mysqli对象(构造方法):
$_mysqli=new mysqli($host,$username,$password,$db_name,$port=3306);
单独设置数据库名称
$_mysqli ->select_db('db_name');
设置编码
$_mysqli->set_charset("utf8");
断开MySQL的连接
$_mysqli->close();
二、错误的处理
如果数据库的信息填写错误,那么创建$_mysqli对象时会失败,此时mysqli类里面的所有方法和属性都是不能使用的,所以如果是数据库连接错误的话,只能使用函数方式来捕获错误信息
mysqli_connect_errno() 函数返回连接数据库返回的错误号。
Mysqli_connect_error() 函数返回连接数据库返回的错误信息。
当数据库连接信息正确时,就可以使用mysqli类里面的方法和属性了,那么在连接以后的操作中如果出现了错误那么可以使用errno属性和error属性来捕获错误信息了
errno 属性返回数据库操作时的错误号。
error 属性返回数据库操作时的错误信息。
三、数据库的操作
1. 执行sql语句并获取结果集
query($sql)
$sql="SELECT * FROM db_name";
$result=$_mysqli->query($sql);
// 执行sql语句把结果集赋给$_result
$result ->free();
释放查询内存 ( 销毁 资源句柄)
等价的还有close()、free_result()方法,功能用法是完全相同的
2. 解析结果集
一旦执行了sql语句并获取结果集,就可以解析获取到的结果行了
可以使用多个方法来获取各行中的字段
方法1:将结果集放到对象中
由于可能会使用mysqli的面向对象的语法,所以可以采用面向对象的方式管理结果集
fetch_object() :将结果集的第一条信息包装成对象
$row = $_result ->fetch_object();
echo $row->username;// 输出对象中的一个字段(属性)
fetch_object()方法运行一次指针就下移一次,再次运行此方法会获取到第二条数据
while (!! $row = $result ->fetch_object()) {
echo $row->username;
}
方法2:使用索引数组和关联数组
fetch_array():将结果集中当前数据指针处的一条信息包装成数组 ( 索引 + 关联 )
$row = $result ->fetch_array();
echo $row[3]; // 以索引数组形式获取值
echo $row['name']; //以关联数据形式获取值
fetch_array():将结果集中当前数据指针处的一条信息包装成索引数组
$row = $result ->fetch_row();
echo $row [3];
fetch_assoc():将结果集中当前数据指针处的一条信息包装成关联数组
$row = $result ->fetch_assoc();
echo $row [ 'username' ];
fetch_array()、fetch_row()、fetch_assoc()都是操作结果集的一条信息,运行一次数据指针就下移一行
3. 确定操作返回结果集的行和受影响的行
结果集的num_rows属性
获取SELECT查询返回的行数
echo $_result ->num_rows;
mysqli对象的affected_rows属性
获取受INSERT 、UPDATE或DELET查询影响的行数
获取SELECT查询返回的行数
echo $mysqli->affected_rows;
4. 移动指针的操作和获取字段
结果集的field_coun属性:获取每条结果集信息中多少个字段(多少列)
fetch_field()
获取结果集中当前字段指针处的一条信息集合对象(结果集中的一列)
再此运行此方法会将字段指针向后移动一列并返回信息集合对象
name属性为该字段的名称
fetch_fields()
一次性取得所有字段信息集合对象组成的数组
$_result ->data_seek(5);
移动数据指针,数字从0开始
$_result ->field_seek(2);
移动字段指针,数字从0开始