PHP操作Mysql数据库(Msqli)

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();//关闭连接

转载于:https://my.oschina.net/qqlet/blog/1204649

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值