从前天开始,我的电脑不知道怎么了,写程序的时候无缘无故就死机。还不是彻底死,鼠标还能动,就是点击不好使,也打不开任务管理器。昨晚检查一下硬盘,有六个坏道,也不知道是不是这个原因。但是我在玩的时候,只要不打开编译器写程序,啥事也没有。玩游戏也不回出现那种情况。把我搞得好烦。
MySQLi扩展库在基础操作上看着没什么不同,只是从面面向过程转换成了面向对象。但是既然是mysql扩展库的增强,那一定有强的地方。有如下代码:
<?php
//mysqli 的增强,批量执行sql语句
//批量执行dml语句(增删改)
//使用了mysqli::multi_query($sqls)方法
//$sqls = "$sql1;$sql2;...";
//1.得到mysqli对象
//$mysqli=new MySQLi("localhost","root","root","test");
//if($mysqli->connect_error){
// die($mysqli->connect_error);
//}
//$sqls = "insert into user(name,phone,address)values('张飞',18899992222,'中国');";
//$sqls .= "insert into user(name,phone,address)values('黄飞鸿',18899991111,'中国');";
//$sqls .= "insert into user(name,phone,address)values('王刚',18899993333,'中国');";
//$res = $mysqli->multi_query($sqls);
//if(!$res){
// echo "执行失败";
//}else{
// echo "ok";
//}
//$mysqli->close();
//批量执行dml语句的时候可以混合使用:insert delete update语句,但是最好不要插入select语句
//批量执行dql语句(select)
//1.打开mysqli对象
$mysqli=new MySQLi("localhost","root","root","test");
//2.批量查询
$sqls = "select * from mr_user;";
$sqls.="select * from user;";
//$sqls.="desc user";//显示表的结构
//3.处理结果
//如果成功,则至少有一个结果集
if($res=$mysqli->multi_query($sqls)){
do{
//从mysqli连接取出第一个结果集
$result = $mysqli->store_result();
//显示mysqli result对象
while($row=$result->fetch_row()){
foreach($row as $key=>$val){
echo "$val--";
}
echo "<br>";
}
//使用完第一个结果集后应该及时释放资源
$result->free();
if(!$mysqli->more_results()){
break;
}
echo "<br>**************新的结果集************<br>";
}while($mysqli->next_result());
}
//4.关闭资源
?> 上面用到的数据库是我自己另建的。
<?php
//预编译机制,添加三个用户
//1.创建一个mysqli对象
$mysqli = new MySQLi("localhost","root","root","test");
//2.创建预编译对象
$sql = "insert into user (name,phone,address) values(?,?,?)";//问号是占位符,以后只要用数据替换就ok
$mysqli_stmt = $mysqli->prepare($sql);
//绑定参数
$name = array("小倩","小白","小黑");
$phone = array("18833332222","18744446666","18899992222");
$address = array("古代","古代","现代");
//参数绑定---->给?赋值
//这里类型和顺序都要对应
for($i=0;$i<3;$i++){
$mysqli_stmt->bind_param("sss",$name[$i],$phone[$i],$address[$i]);//这里三个s是代表数据类型是字符串类型
//执行语句
$b = $mysqli_stmt->execute();
}
if(!$b){
die("操作失败".$mysqli_stmt->error);
}else{
echo "操作成功";
}
//释放资源
$mysqli->close();
?>
<?php
//预编译机制,从数据库查询
//使用预处理的方法,查询所有Id>8的用户的id,name ,address
//1.创建一个mysqli对象
$mysqli = new MySQLi("localhost","root","root","test");
//2.创建预编译对象
$sql = "select id,name,address from user where id>?";
$mysqli_stmt = $mysqli->prepare($sql);
$i=8;
//绑定参数
$mysqli_stmt->bind_param("i",$i);
//由于这次有返回对象了,所以需要绑定结果集
$mysqli_stmt->bind_result($id,$name,$address);
//执行
$mysqli_stmt->execute();
//取出绑定的结果集
while($mysqli_stmt->fetch()){
echo "<br>--$id--$name--$address--";
}
//如果想再执行一次类似上面的只是$i改变的查询,那么就无须绑定结果集
//释放资源
$mysqli_stmt->free_result();
//关闭预编译指令
$mysqli_stmt->close();
//关闭连接
$mysqli->close();
?>
<?php
$mysqli = new MySQLi("localhost","root","root","test");
if($mysqli->connect_error){
die($mysqli->connect_error);
}
//将提交设为false
$mysqli->autocommit(false);//打开或关闭本次数据库连接的自动命令提交事务模式 ,这里设置不要自动提交(false)
//这里相当于做了一个透明的保存点。会把当前情况记录下来。
$sql1 = "update account set balance=balance+100 where id = 1";
$sql2 = "update account set balance=balance-100 where id = 2";
$res1 = $mysqli->query($sql1);
$res2 = $mysqli->query($sql2);
if(!$res1||!$res2){
//回滚事务
$mysqli->rollback();//回滚到保存点
echo "fail";
}else{
//提交
$mysqli->commit(); //这里是真正的提交,一旦提交没有机会回滚。
echo "success";
}
?>边记边学PHP-(十七)PHP使用MySQLi扩展库操作数据库2
原文地址:http://blog.csdn.net/u014470702/article/details/42141577