mysqli简介:
1:是mysql的扩展模块;通过mysqli访问mysql数据更安全,支持预处理,因此可以避免sql注入,更易维护;
2:提供了面向对象和面向过程的接口,而mysql_extension只能通过面向过程接口访问;
3:mysql是非持久连接函数,脚本执行完毕即断开连接;而mysqli则是持久连接;
使用mysqli面向对象接口访问数据库;
1:打开mysqli扩展模块;
php.ini文件: extension = php_mysqli.dll;//去掉前面的分号
2:连接数据库:
$mysqli = new mysqli("localhost","username","passwored",'daname');
或:
$mysqli = new mysqli();
$mysqli->connect("localhost","username","passwored",'daname');
3:连接错误处理:
connect_error():返回mysql连接错误的错误信息
connect_errno():返回mysql连接的错误代码;
if($link->connect_error()){}
if($link->connect_errno()){}
4:设置字符编码:
$mysqli->set_charset("utf-8");
5:执行sql语句:
$result = $mysqli->query($sql);
//如果是增删改语句返回true/false;
//如果是查询语句。执行成功返回结果集,执行失败返回false;
6:处理结果集:
//将结果集包装成对象;
1:$result->fetch_object();
//将结果包装成数组;
2:$result->fetch_array();
//将结果包装成数组;
3:$result->fetch_assoc();
//将结果包装成数组;
4:$result->fetch_row();
6:跳转结果集指针:
$result->data_seek()//把结果集指针跳转到指定条;
//解析的时候必须要放置在循环中,否则将只能取出满足条件的第一条数据
7:获取其他信息:
1:$result->num_rows()//:获取结果集的总行数;
2:$result->num_fields()//:获取结果集的字段数;
3:$result->affected_rows()//:获取受影响的行数;
4:$reslut->fetch_fields()//:获取某行所有字段并作为数组;
5:$result->data_seek()//:移动数据指针,默认是在第一列;
6:$result->field_tell() //获取当前指针的位置;
7:free_result() //释放结果内存。
8:执行多条查询语句:
$_sql .="SELECT * FROM tg_user;" ;
$_sql .="SELECT * FROM tg_photo;" ;
$_sql .="SELECT * FROM tg_article" ;
// 开始执行多条 SQL 语句
if ( $_mysqli->multi_query( $_sql )) {
//开始获取第一条 SQL 语句的结果集
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
//将结果集指针移到下一个
$_mysqli->next_result();
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
$_mysqli->next_result();
$_result= $_mysqli ->store_result();
print_r($_result ->fetch_array());
} else {
echo'sql 语句有误! ' ;
}
9:获取和数据库本身有关的信息:
$mysqli->get_charset() //返回字符集对象。
$mysqli->get_client_info() //返回 MySQL 客户端库版本。
$mysqli->get_client_stats() //返回有关客户端每个进程的统计。
$mysqli->get_client_version() //将 MySQL 客户端库版本作为整数返回。
$mysqli->get_connection_stats() //返回有关客户端连接的统计。
$mysqli->get_host_info() //返回 MySQL 服务器主机名和连接类型。
$mysqli->get_proto_info() //返回 MySQL 协议版本。
$mysqli->get_server_info() //返回 MySQL 服务器版本。
$mysqli->get_server_version() //将 MySQL 服务器版本作为整数返回。
10:事务:
mysqli事务:
//1:关闭自动提交:
$mysqli->autocommit(false);
//2:执行sql语句:
$resul1 = $mysqli->query($sql1);
$resul2 = $mysqli->query($sql2);
$resul3 = $mysqli->query($sql3);
//3:提交
if($resul1&&resul2&&resul3){
$mysqli->commit();
}else{
$mysqli->rollback();
}
//4:事务执行完成开启自动提交:
$mysql->autocommit(true);