首页 > php学习 > php基础知识 > mysqli面向对象的使用①
2016
12-16

mysqli面向对象的使用①

一、创建、选择、设置和断开mysql连接

1、创建一个mysqli的对象

$_mysqli=new mysqli();

2、连接MySql使用的主机、用户名、密码和数据库名、使用端口号

$_mysqli->connect('localhost','mysql_username','mysql_password','db_name',mysql_port);

参数可以从后往前省略。

也可以把第一步和第二步结合,直接创建一个带连接参数的mysqli对象(构造方法):

$_mysqli=new mysqli('localhost','mysql_username','mysql_password','db_name');

单独选择数据库:$_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 属性返回数据库操作时的错误信息。

if ($_mysqli->errno){echo '操作错误:'.$_mysqli->error;}

三、数据库的操作

1.执行sql语句并获取结果集

$_sql="SELECT * FROM db_name";//创建一句SQL语句

$_result=$_mysqli->query($_sql);//执行sql语句把结果集赋给$_result

print_r( $_result ->fetch_row());// 将结果集的第一条输出

$_result ->free();// 释放查询内存 ( 销毁 资源句柄),等价的还有close()、free_result()方法,功能用法是完全相同的。

2. 解析结果集

一旦执行了查询并获取结果集,就可以解析获取到的结果行了。可以使用多个方法来获取各行中的字段 ,具体选择哪一个方法主要取决于个人喜好,因为只是引用字段的方法有所不同。

方法1:将结果集放到对象中

由于可能会使用mysqli的面向对象的语法,所以可以采用面向对象的方式管理结果集。可以使用 fetch_object() 方法来完成。

$_row = $_result ->fetch_object();// 将结果集的第一条包装成对象,fetch_object()方法运行一次指针就下移一次,再次运行此方法会获取到第二条数据

echo $_row->username;// 输出对象中的一个字段(属性)

echo $_result ->fetch_object()->username,这样也是可行。

while (!! $_row = $_result ->fetch_object()) {// 遍历,两个感叹号是把数据转换成bool值

echo $_row->username;

}

方法2:使用索引数组和关联数组

$_row = $_result ->fetch_array();// 将结果集包装成数组 ( 索引 + 关联 )

echo $_row [ 3 ];// 输出下标是 3 的字段值

echo $_result ->fetch_array()[3],和方法1不同的是,这样会报错,必须先把$_result ->fetch_array()赋给一个变量,再通过这个变量获取值。

$_row = $_result ->fetch_row();// 将结果集包装成索引数组

echo $_row [ 3 ];

$_row = $_result ->fetch_assoc();// 将结果集包装成关联数组

echo $_row [ 'tg_username' ];

fetch_array()、fetch_row()、fetch_assoc()都是操作结果集的第一条,运行一次指针就下移一次,再次运行会获取到第二条数据。

3. 确定操作返回结果集的行和受影响的行

如果希望能够确定SELECT查询返回的行数,或者受INSERT 、UPDATE或DELET查询影响的行数。我们可以使用num_rows和affected_rows两个属性

想了解返回结果集有多少行,可以使用num_rows(这个是结果集下的属性)。echo $_result ->num_rows;

想了解操作影响的行数,可以使用affected_rows(这个是$_mysqli下的属性),当进行select查询操作时,affected_rows属性返回的值是结果集中的行数,即等于结果集的num_rows属性。

echo $_mysqli->affected_rows;

4. 移动指针的操作和获取字段

当你并不想从第一条数据开始获取,或者并不想从第一个字段获取,你可以使用数据指针移动或者字段指针移动的方式调整到恰当的位置 。当然,你还可以获取字段的名称及其相关的属性。

echo $_result ->field_count;// 计算有多少条字段(多少列)

$_field = $_result ->fetch_field();// 获取第一个字段的信息集合对象,运行一次指针就后移一次,再此运行此方法或获取第二个字段的信息集合对象

echo $_field ->name;//name属性为该字段的名称。

print_r( $_result ->fetch_fields());// 一次性取得所有字段信息集合对象组成的数组

$_result ->data_seek(5);// 移动数据指针,数字从0开始

$_result ->field_seek(2);// 移动字段指针,数字从0开始

最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。