3个类
mysqli 和连接有关的类
mysqli_reslut 表达了对数据库的查询返回的结果集
mysqli_stmt 预处理类
mysqli:
__contruct ( $host, $user, $password, $dbname [, $port] ) 构造函数,创建一个mysqli对象
mysqli_connect_errno() 返回连接数据库的错误号
mysqli_connect_error() 返回连接数据库的错误内容
/**
*下面也可以可以进行数据库连接,但比较少用
*mysqli_init();
*mysqli_options();
*mysqli_read_connect();
*/
获取相关信息
character_set_name();
get_client_info();
host_info();
server_info();
server_version();
$result = $mysqli->query($sql); 执行sql语句。如果是select语句则返回结果集,如果是其他语句则返回true和false
errno 返回执行sql语句的错误号
error 返回执行sql语句的错误内容
affected_rows sql语句的影响行数
insert_id 对于insert语句新插入的行的自动增长id号
multi_query($sql1 . ";" . $sql2 . ";" . $sql3); 一次执行多条语句
$result = $mysqli -> store_reslult(); 获取一个结果集
$mysqli -> next_result(); 将指针指向下一个结果集,如果下一个为空则返回false
$mysqli -> more_results(); 判断是否还有结果集,返回布尔值
事务相关:
1.mysql表类型选择InnoDB
2.默认都是自动提交的,要先关闭自动提交
set autocommit = 0;
3.开启事务。
start transaction;
4.执行完sql语句后可以用
rollback; 进行回滚
5.如果确定没问题可以提交
commit;
mysqli中都有对应的方法
autocommit ( false ); 关闭自动提交
commit ( ); 提交
rollback ( ); 回滚
close(); 断开数据库连接
mysqli_result
执行select语句后返回的结果集对象
num_rows 获取行数
field_count 获取列数
对应mysql扩展库的四个方法,每执行一次就会从结果集中取出当前一条记录,默认从第一行开始
也可以使用data_seek($num)来指定,每次执行完指针指向下一行,当结果集中没有记录时则返回false
fetch_array();
fetch_row();
fetch_assoc();
fetch_object()
fetch_field(); 与获取行类似,获取到当前字段的信息(包括 name, orgname, max_length, table等属性 ),默认从第一列开始,也可以用field_seek来设置开始列
current_field 当前列的列号
"DESC $tbname" 返回的也是一个表,可以作为结果集来操作
close();/ free(); / free_result(); 释放结果集
mysqli_stmt
1.准备一条语句
$stmt = $mysqli -> stmt_init(); 创建mysqli_stmt对象
$sql = " INSERT INTO user ( name, password, type ) VALUES ( ?, ?, ? ) ";
$stmt->prepare($sql);
或者如下
$stmt = $mysqli -> prepare ($sql);
2.绑定参数(给每个?号传值)
$stmt-> bind_param("ssi", $name, $password, $type );
类型:i 整型 d浮点型 s字符串 b二进制
后面的参数是引用类型,所以必须是变量名,而且可以在绑定之后再修改
3.执行语句
$stmt -> execute(); 返回bool值,表明语句执行成功与否
$stmt -> insert_id;
$stmt -> affected_rows;
4.获取结果集
$stmt = $mysqli -> prepare ( " SELECT name, host, password FROM user " );
$stmt -> bind_result ( $name, $host, $pass);
$stmt -> execute();
//返回字段信息
$result = $stmt -> result_metadata();
$field = $result -> fetch_field(); 获取字段
$field -> name 获取字段名
//获取记录信息
$stmt -> fetch(); 从第一行记录开始获取,把每次获取的记录都赋值到绑定的变量。如果获取到了记录返回true,否则返回NULL
echo "$name--$host--$pass";
$stmt -> store_result(); 一次性将结果都取出来
$stmt-> num_rows; 返回记录行数
$stmt -> free_result(); 用完结果集需要释放
5.关闭对象
$stmt->close();