php mysqli

1、基本操作

<?php
//支持预处理、支持事务

//检测拓展是否已经加载
// var_dump(extension_loaded('mysqli'));
//检测函数是否已经存在
// var_dump(function_exists('mysqli_connect'));
//得到已经开启的拓展
// print_r(get_loaded_extensions());

/********步骤:
1、建立到mysql的连接
2、打开指定的数据库
3、设置默认客户端的字符集
4、执行sql查询
5、释放结果集
6、关闭连接
********/
// 1、建立到mysql的连接
$mysqli = new mysqli('localhost','root','123456');
if($mysqli->connect_errno){
    die("连接错误:".$mysqli->connect_error);
} 
//2、打开指定的数据库
$mysqli->select_db('test');
//3、设置默认客户端的字符集
$mysqli->set_charset('utf8');
//4、执行sql查询
$sql = <<<EOF
    select * from test;
EOF;
$res = $mysqli->query($sql);//query执行一条语句
//多结果集
//more_results()检查是否有更多的结果集
//next_result()将结果集指针向下移动一位
// $res = $mysqli->multi_query($sql);//执行多条或一条
// if($mysqli->multi_query($sql)){
//     do{
//         if($res = $mysqli->store_result()){//获取结果集
//             $rows[] = $res->fetch_all(MYSQLI_ASSOC);
//         }
//     }while($mysqli->more_results() && $mysqli->next_result());//检查下一个结果集,并移动指针
// }else{
//     echo $mysqli->error;
// }
//5、释放结果集
if($res){
    if($mysqli->num_rows>0){
        $rows = $res->fetch_all();//所有数据,索引数组
        $rows = $res->fetch_all(MYSQLI_NUM);//同上
        $rows = $res->fetch_all(MYSQLI_ASSOC);//关联数组,带字段
        $rows = $res->fetch_all(MYSQLI_BOTH);//索引数组和关联数组
        
        $row = $res->fetch_row();//第一条数据,一维,索引
        $row = $res->fetch_assoc();//取得结果集中的一条记录作为关联数组返回
        
        $res->free();//释放一个与结果集相关的内存
    }
    //得到上条语句影响记录数。
    //受影响记录的条数
    //返回-1.代表sql语句有问题
    //返回0,代表没有受影响记录的条数
    echo '有'.$mysqli->affected_rows.'记录被影响';
}else{
    //
    echo "执行sql语句错误".$mysqli->errno.':'.$mysqli->error;
}
//6、关闭连接
$mysqli->close();
?>

2、预处理

<?php
//预处理
//含有占位符的sql语句被直接发送至数据库引擎,数据库引擎执行编译等准备工作后确定sql语句,
//随后绑定值也被发送至数据库引擎,数据库引擎将收到的值填充进sql语句后将其执行
$mysqli = new mysqli('localhost','root','123456','test');
$mysqli->set_charset('utf8');
$sql = "insert user(id,firstname,lastname,sex) values(?,?,?,?)";
//准备预处理语句
$mysqli_stmt = $mysqli->prepare($sql);
// print_r($mysqli_stmt);
//绑定参数 i - integer(整型) d - double(双精度浮点型) s - string(字符串) b - BLOB(布尔值)
$id = 5;
$firstname = 'wang';
$lastname = 'wan';
$sex = 2;
$mysqli_stmt->bind_param('issi',$id,$firstname,$lastname,$sex);
//执行预处理语句
if($mysqli_stmt->execute()){
    echo $mysqli_stmt->insert_id;
}else{
    $mysqli_stmt->error;
}
?>

3、事务

<?php
//事务
$mysqli = new mysqli('localhost','root','123456','test');
$mysqli->set_charset('utf8');
$mysqli->autocommit(false);
$sql = "update account set money=money-100 where user='xiaoming'";
$res = $mysqli->query($sql);
$res_affect = $mysqli->affected_rows;

$sql2 = "update account set money=money+100 where user='xiaohua'";
$res2 = $mysqli->query($sql);
$res_affect2 = $mysqli->affected_rows;
if($res && $res_affect && $res2 && $res_affect2){
    $mysqli->commit();
    echo "转账成功";
    $mysqli->autocommit(ture);
}else{
    $mysqli->rollback();
    echo "转账失败";
}
$mysqli->close();
?>
原文地址:https://www.cnblogs.com/natian-ws/p/8503489.html