從前天開始,我的電腦不知道怎麼了,寫程序的時候無緣無故就死機。還不是徹底死,鼠標還能動,就是點擊不好使,也打不開任務管理器。昨晚檢查一下硬盤,有六個壞道,也不知道是不是這個原因。但是我在玩的時候,只要不打開編譯器寫程序,啥事也沒有。玩游戲也不回出現那種情況。把我搞得好煩。
MySQLi擴展庫在基礎操作上看著沒什麼不同,只是從面面向過程轉換成了面向對象。但是既然是mysql擴展庫的增強,那一定有強的地方。有如下代碼:
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
;
}
//使用完第一個結果集後應該及時釋放資源
$result->free();
if(!$mysqli->more_results()){
break;
}
echo
**************新的結果集************
;
}while($mysqli->next_result());
}
//4.關閉資源
?>
上面用到的數據庫是我自己另建的。
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();
?>
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
--$id--$name--$address--;
}
//如果想再執行一次類似上面的只是$i改變的查詢,那麼就無須綁定結果集
//釋放資源
$mysqli_stmt->free_result();
//關閉預編譯指令
$mysqli_stmt->close();
//關閉連接
$mysqli->close();
?>
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;
}
?>