1.连接数据库
$mysqli = new mysqli( 主机' , '用户名' , '密码' , '数据库' );//连写
或者
$mysqli=new mysqli();// 实例化mysqli
$mysqli->connect(‘主机’, ‘用户名’, ’密码’, ’数据库’);
$mysqli->close(); //关闭资源
2.处理连接错误
mysqli_connect_errno()函数返回链接数据库返回的错误号。
mysqli_connect_error()函数返回连接数据库返回的错误代码。
<?php
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('localhost','root',root,'test');
if($mysqli->connect_error){
echo'数据库连接错误,错误信息是.'.$mysqli->connect_error;
exit();
}else{
//正常逻辑代码
}
3.查询数据的处理
(1)fetch_row()
<?php
header('Content-type:text/html;charset=utf8');
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('127.0.0.1','root','root','info');
if($mysqli->connect_error){
exit('数据库连接错误,错误信息是.'.$mysqli->connect_error);
}
$mysqli->set_charset("UTF8");//设置数据库编码
$sql='select * from tp_product';//创建一句SQL语句
$result=$mysqli->query($sql);//执行sql语句把结果集赋给$result
print_r($result->fetch_row());//将结果集的第一行输出
$result->free();//释放查询内存(销毁)
$mysqli->close();//别忘了关闭你的"小资源";
(2)fetch_object()
<?php
header('Content-type:text/html;charset=utf8');
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('192.168.2.11','root','root','info');
if($mysqli->connect_error){
exit('数据库连接错误,错误信息是.'.$mysqli->connect_error);
}
$mysqli->set_charset("UTF8");//设置数据库编码
$sql='select * from tp_product';//创建一句SQL语句
$result=$mysqli->query($sql);//执行sql语句把结果集赋给$result
/*
$row = $result->fetch_object();//将结果集包装成对象
echo $row->user;//输出对象中的一个字段(属性)
*/
while (!!$row = $result->fetch_object()){ //遍历所有的用户名称
echo $row->pid.'->'.$row->id."<br>";
var_dump($row);
}
$result->free();//释放查询内存(销毁)
$mysqli->close();//别忘了关闭你的"小资源";
(3)fetch_array()
<?php
header('Content-type:text/html;charset=utf8');
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('192.168.2.11','root','root','info');
if($mysqli->connect_error){
exit('数据库连接错误,错误信息是.'.$mysqli->connect_error);
}
$mysqli->set_charset("UTF8");//设置数据库编码
$sql='select id,pid from tp_product';//创建一句SQL语句
$result=$mysqli->query($sql);//执行sql语句把结果集赋给$result
/*$row = $result->fetch_assoc();//将结果集包装成关联数组
var_dump($row);
echo '<br>'.$row['pid'];
*/
while($row = $result->fetch_assoc()){//遍历所有
var_dump($row);echo "br>";
}
$result->free();//释放查询内存(销毁)
$mysqli->close();//别忘了关闭你的"小资源";
4.执行多条SQL语句
<?php
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('127.0.0.1','root','root','info');
if(mysqli_connect_error()){
exit('数据库连接错误,错误信息是.'.mysqli_connect_error());
}
$mysqli->set_charset("UTF8");//设置数据库编码
//创建多条SQL语句
$sql='';
$sql .= "SELECT article_title FROM tp_article;";
$sql .= "SELECT nav_name FROM tp_nav;";
$sql .= "SELECT order_id FROM tp_order";
if ($mysqli->multi_query($sql)) {//开始执行多条SQL语句
$result = $mysqli->store_result();
print_r($result->fetch_assoc());//开始获取第一条SQL语句的结果集
echo "<hr>";
$mysqli->next_result();//将结果集指针移到下一个
$result = $mysqli->store_result();
print_r($result->fetch_assoc());//开始获取第二条SQL语句的结果集
echo "<hr>";
$mysqli->next_result();
$result = $mysqli->store_result();
print_r($result->fetch_assoc());//开始获取第三条SQL语句的结果集
} else {
echo 'sql语句有误!';
}
$result->free();//释放查询内存(销毁)
$mysqli->close();//别忘了关闭你的"小资源";
5.数据库事务
事务(transaction)是作为整个一个单元的一组有序的数据库操作。如果一组中的所有操作都成功,则认为事务成功,即使只有一个失败操作,事务也不成功。如果所有操作成功完成,事务则提交(commit),其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚(roll back),该事务所有操作的影响都将取消。首先,您的MySQL是InnoDB或BDB引擎的一种,一般来说,你安装了AppServ的集成包,你选择InnoDB的引擎的数据库即可。如果你建立的表不是InnoDB,可以在phpmyadmin里修改
<?php
$mysqli=new mysqli();//实例化mysqli
@$mysqli->connect('192.168.2.11','root','root','test');
if($mysqli->connect_error){
exit('数据库连接错误,错误信息是.'.$mysqli->connect_error.'<br>错误码为:'.$mysqli->connect_errno);
}
$mysqli->set_charset("UTF8");//设置数据库编码
//首先你必须关闭自动提交数据
$mysqli->autocommit(false);
//创建一个SQL语句,必须同时运行成功,不能出现一个成功,一个失败
$sql='';
$sql .= "UPDATE `copy1` SET phone=666666 WHERE id=1;";
$sql .= "UPDATE `copy1` SET phone=999999 WHERE id=2;";
//执行两条SQL语句
if ($mysqli->multi_query($sql)) {
//获取第一条SQL一影响的行数
$success = $mysqli->affected_rows == 1 ? true : false;
//下移,第二条SQL
$mysqli->next_result();
//获取第二条SQL影响的行数
$success2 = $mysqli->affected_rows == 1 ? true : false;
//判断是否都正常通过了,两个SQL
if ($success && $success2) {
$mysqli->commit();
echo '完美提交!';
} else {
$mysqli->rollback();
echo '程序出现异常!';}
} else {
echo "SQL语句有误:".$mysqli->errno.$mysqli->error;
}
//最后还必须开启自动提交
$mysqli->autocommit(true);
$mysqli->close();//别忘了关闭你的"小资源";
6.sql语句的预处理(主要用于insert,update)
mysqli预处理类(推荐):表示了准备好的一个语句,服务器端只编译一次sql 用mysqli和mysqli_result可以实现同样的功能 优点:效率高,适用于语句相同只是数据不同的情况 ,可以阻止sql注入的产生
<?php
$mysqli=new mysqli();
$mysqli->connect('192.168.2.11','root','root','test');
if($mysqli->connect_error){
exit('数据库连接失败,错误信息为:'.$mysqli->connect_error);
}
$mysqli->set_charset('UTF8');
$sql="INSERT INTO `login`(username,passwd) VALUES(?,?)";
$smt=$mysqli->prepare($sql);
$smt->bind_param('ss',$name,$pwd);//绑定数据
/*第一个参数是绑定类型,"s"是指一个字符串,也可以是"i",指的是int。也可以是"db",
* d代表双精度以及浮点类型,而b代表blob类型,第二个参数是变量....
*/
$name='李四';
$pwd='99999';
$smt->execute();//执行SQL语句
$name='lisi';
$pwd='88888';
$smt->execute();//执行SQL语句
$mysqli->close();//关闭连接