学会了使用了mysqli扩展库之后,总体感觉比面向过程的方法更加合理化,面向对象是大势所趋,所以绝不能仅仅只用那一套老的mysql库了,也不利于php对mysql的操作,因为我们在实际的开发中,很多还是面向对象开发的,在这里,就说一下mysqli之所以成为扩展库自然有其理由,就批量操作的特性就大大的提高了代码的执行效率。
还是和以往一样,我喜欢把sql语句分为dql语句和dml语句,主要是根据返回结果来分的,前者是结果集(需要释放),后者是布尔值。
下面是批量操作dml语句的代码:
?
execute_dml($sql);
//$res->free();*/
//这是mysqli批量增删改数据
$mysqli= new MySqli("localhost","root","toor","education");
if($mysqli->connect_error){
die("连接失败:".$mysqli->connect_error);
}
echo "连接成功
";
/*//批量添加数据
$sql_1.="insert into words (enword,chword) values(
'classroom444','教室');";
$sql_1.="insert into words (enword,chword) values(
'classroom222','教室');";
$sql_1.="insert into words (enword,chword) values(
'classroom333','教室');";
$b=$mysqli->multi_query($sql_1);
*/
//批量删除数据
/*$sql_2.="delete from words where id=14;";
$sql_2.="delete from words where id=15;";
$sql_2.="delete from words where id=16;";
$sql_2.="delete from words where id=17;";
$sql_2.="delete from words where id=18;";
$sql_2.="delete from words where id=19;";
$sql_2.="delete from words where id=20;";
$sql_2.="delete from words where id=22;";
*/
//也可以批量修改。。。。
/*但是不建议和select语句共用*/
$b=$mysqli->multi_query($sql_2);
if(!$b){
echo "添加失败";
}else{
echo "添加成功".$mysqli->connect_error;
}
$mysqli->close();
?>
?
下面是操作dql语句的代码:相对于dml就有一点复杂了:
?
connect_error){
die("连接失败:".$mysqli->connect_error);
}
echo "连接成功
";
$sql_3.="select * from words;";
$sql_3.="select * from words_test1;";
if($res=$mysqli->multi_query($sql_3)){
do{
$result=$mysqli->store_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());
}
$mysqli->close();
?>
主要就是后者返回的是一个结果集的集合,需要一层一层的把它剥开看能够看到东西。
?