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(); ?>