<?php header("Content-Type:text/html;charset=utf-8");//使用mysqli对象操作数据库//方法一://$_mysqli = new mysqli();//方法二:@$_mysqli = new mysqli('localhost','127_0_0_14','123456','127_0_0_14');//连接数据库  1.主机名(ip) 2.账户 3.密码  4.数据库//mysqli_connect()函数  == $_mysqli->connect()//$_mysqli->connect('localhost','127_0_0_16','123456','127_0_0_16');//为什么要用函数去捕捉呢?//为什么不用面向对象的方式去捕捉呢?//0表示没有任何错误.,判断数据库的错误if (mysqli_connect_errno()) {echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();exit();}//设置一下编码$_mysqli->set_charset('utf8');//单独选择一个数据库//这里选择的数据库会替代上面的数据库//为了避免这些麻烦,尽量不用去单独指向了,这个函数可加可不加$_mysqli->select_db('127_0_0_14');//数据库操作时发生的错误,这个判断可加可不加if ($_mysqli->errno) {echo '数据库操作错误:'.$_mysqli->error;}//创建一句SQL,获取数据库的表数据$_sql = "SELECT * FROM ey_users";//执行SQL语句,把结果集赋给$_result(资源句柄);//这个赋值,再任何一个语法都不变,这个是普通方法,只能执行一条,下面的可以执行多条$_result = $_mysqli->query($_sql);//创建三条修改的SQL语句,注意sql里的.和最后面的分号;// $_sql .="UPDATE ey_users SET username='是是是' WHERE users_id=1;";// $_sql .="UPDATE ey_biaoer SET username='是是是' WHERE users_id=1;";// $_sql .="UPDATE ey_biaosan SET username='是是是' WHERE users_id=1";// //使用同时执行的方法,可以同时执行多条// $_mysqli->multi_query($_sql);//创建三条选择语句 ,注意sql里的.和最后面的分号;// $_sql .= "SELECT * FROM tg_photo;";// $_sql .= "SELECT * FROM tg_user;";// $_sql .= "SELECT * FROM tg_friend";// //如果第一条sql没出错就往下执行// if ($_mysqli->multi_query($_sql)) {//    //获取当前的结果集,获取第一条结果集//    $_result = $_mysqli->store_result();//  print_r($_result->fetch_row());//    echo '<br />';//    //将结果集的指针移到下一条,并判断第二条SQL语句有没有出错//    $_mysqli->next_result();//   $_result = $_mysqli->store_result();//  if (!$_result) {//      echo '第二条SQL语句有误!';//         exit();//   }//     print_r($_result->fetch_row());//    echo '<br />';//    //继续将结果集的指针移到下一条,并判断第三条SQL语句有没有出错//  $_mysqli->next_result();//   $_result = $_mysqli->store_result();//  if (!$_result) {//      echo '第三条SQL语句有误!';//         exit();//   }//     print_r($_result->fetch_row());  // } else {//   echo '第一条SQL语句有误';//  exit();// }//通过结果集,获取第一行数据,这个是索引数组//fetch_row(); 是返回的一个数组,里面是第一条数据的集合//这个是索引数组取值,运行一次指针下移一条//print_r($_result->fetch_row());//$_row = $_result->fetch_row();//echo $_row[1];//遍历数组,打印所有数据,!!是转换为数组,这样的弊端是,下标很难记// while(!!$_row = $_result->fetch_row()){//  echo $_row[1].'<br />';// }//使用关联数组取值,获取第一行数据,这个是关联数组//这个是关联数组取值,运行一次指针下移一条//print_r($_result->fetch_assoc());//$_row = $_result->fetch_assoc();//echo $_row['username'];//遍历关联数组,打印所有数据// while(!!$_row = $_result->fetch_assoc()){//     echo $_row['username'].'<br />';// }//使用索引+关联数组取值,这个下标用数组和数据库名都可以//print_r($_result->fetch_array());//$_array = $_result->fetch_array();//echo $_array[1];//echo $_array['username'];//遍历索引+关联数组,打印所有数据// while(!!$_array = $_result->fetch_array()){//  echo $_array[1].'<br />';//     echo $_array['username'].'<br />';// }//使用OOP的方式,object,这个是面向对象写法//print_r($_result->fetch_object());//$_object = $_result->fetch_object();//echo $_object->username;//echo $_result->fetch_object()->username; //这个写法是直接输出结果,没有赋值过程了//遍历OPPO方法,object// while(!!$_object = $_result->fetch_object()){//  echo $_object->username.'<br />';// }//我要看下读取了多少条,就是读取了多少条sql数据//echo $_result->num_rows;//我影响了多少行//echo $_mysqli->affected_rows;//统计列数,有多少个字段,会根据你的SQL语句来判断有多少字段//echo $_result->field_count;//获取字段的名字//$_field = $_result->fetch_field();//print_r($_field);//echo $_field->name;//遍历所有的字段名称// while(!!$_field = $_result->fetch_field()){//   echo $_field->name.'<br />';// }//一次性取得所有的字段//$_fields = $_result->fetch_fields();//print_r($_field);//echo $_fields[0]->name;//遍历一次性取得的字段// foreach($_fields as $_field){//  echo $_field->name.'<br />';     // }//移动数据指针,就是往下找第几行,记得是从0开始// $_result->data_seek(1);// $_row = $_result->fetch_row();// echo $_row[1];//移动字段指针,就是从左往右第几列开始,记得是从0开始// $_result->field_seek(2);// $_field = $_result->fetch_field();// echo $_field->name;//销毁结果集,上面必须有这个结果,否则报错$_result->free();//断开MySQL  mysqli_close() == $_mysqli->close()$_mysqli->close();
?>

四种取值方法:

1、索引数组取值:fetch_row()

2、关联数组取值:fetch_assoc()

3、索引数组+关联数组取值:fetch_array()

4、OOP方法,面相对象方法取值:fetch_object(),不需要下标,直接指向

下面是多条SQL同时执行,有一条失败则回滚,不做提交,这个数据库储存类型必须是

存储引擎:InnoDB

<?php//设置数据库执行多条是否成功,如全部sql执行成功就继续,如果有一条不成功就回滚,不做任何操作$_mysqli = new mysqli('localhost','root','yangfan','testguest');//数据库连接时发生的错误if (mysqli_connect_errno()) {echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();exit();}//设置一下编码$_mysqli->set_charset('utf8');//设置关闭自动提交(手工提交)$_mysqli->autocommit(false);//创建两个SQL语句,注意连接符和后面的分号;$_sql .= "UPDATE tg_flower SET tg_flower=tg_flower-50 WHERE tg_id=1;";$_sql .= "UPDATE tg_friend SET tg_state=tg_state+50 WHERE tg_id=1";//执行多条SQL语句//只要这两条SQL语句都成功了,就手工提交给数据库 //否则,就回滚,撤销之前的有效操作。if ($_mysqli->multi_query($_sql)) {//通过影响的行数,来判定SQL语句是否成功执行//如果$_success是false说明sql语句有误,那么就执行回滚,否则就手工提交//affected_rows我影响了多少行,如果是一行就继续执行,如果是0就返回false$_success = $_mysqli->affected_rows == 1 ? true : false;//下移指针$_mysqli->next_result();$_success2 = $_mysqli->affected_rows == 1 ? true : false;//如果两条都成功的话if ($_success && $_success2) {//执行手工提交$_mysqli->commit();echo '完美提交';} else {//执行回滚,撤销之前的所有操作$_mysqli->rollback();echo '所有操作归零!';}} else {echo '第一条SQL语句有错误!';}//再开启自动提交$_mysqli->autocommit(true);//关闭数据库$_mysqli->close();
?>

此课在17-21课

mysqli操作数据库,连接和四种取值方法相关推荐

  1. position属性的四种取值用法

    众所周知,css中position有四种取值,分别是static.fixed.relative.absolute.我们今天就来详细的掰扯掰扯这四个值. Position属性有以下四个取值: 1.sta ...

  2. Java 中Map四种取值方式

    map的主要作用是什么? 可以通过创建一个map的实现类 来存放 数据 值 和值的描述 也可以通过描述去取得数据 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 ...

  3. Map的四种取值方式

    ```javapublic void testMap(){Map<String,String> map = new HashMap<>();map.put("1&qu ...

  4. MATLAB的四种取整方法

  5. Position属性四个取值用法和区别

    Position属性四个取值用法和区别 在初学css的过程中常常会碰到设置定位的问题,大多数初学者都是大概明白,如果不好好弄清楚将会给以后的开发带来困难,经过本小菜对其他文章的浏览,自我总结如下: 目 ...

  6. PHP基础教程十四之使用MySqli操作数据库

    前言 在实际的开发中,PHP都是会和数据库一起使用的,因为在后台需要有太多的数据进行保存,而数据库就是一种很好的保存数据的地方,我们PHP开发用到的数据库是关系型数据库mysql,而PHP和mysql ...

  7. MySqli操作数据库

    mysqli 操作分为面向对象,面向过程两种. 1. PHP基础教程十四之使用MySqli操作数据库 2. mysqli 操作数据库 3. MySQLi基于面向过程的编程 转载于:https://ww ...

  8. 【mysql篇】mysql数据库知识点(四种语言)

    mysql数据库语言分为四种DDL,DQL,DML,DCL下面我们一一介绍: 注:(上图取自黑马程序员的课程APP中,这些笔记也是看了黑马程序员的课程之后做的): 一,       DDL(data ...

  9. 数据库隔离级别(四种)

    首先用通俗的语言介绍以下事务的特性(ACID): 原子性(Atomicity):原子性是指一个事务中的操作,要么全部成功,要么全部失败,如果失败,就回滚到事务开始前的状态. 一致性(Consisten ...

最新文章

  1. 2017年2月7日 今年第一天上班了
  2. Docker(十二):Docker+Jenkins+Nginx+Spring Boot 自动化部署项目
  3. 基于Python的卷积神经网络和特征提取
  4. python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...
  5. 20145318赵一《网络对抗》后门原理与实践
  6. 侍魂服务器维修,侍魂胧月传说合服活动开启 4月15日更新内容预告
  7. java setlayout_Java Button.setLayoutX方法代码示例
  8. 蓝桥杯 ADV-66算法提高 阮小二买彩票
  9. python : 正确复制列表的方法
  10. ubuntu启动virtualbox出错解决办法:RTR3InitEx failed with rc=-1912 (rc=-1912)
  11. 兼容PC、移动端(微信公众号) vue全屏滚动组件 支持vue2和vue3
  12. Android聊天软件开发(基于网易云IM即时通讯)——发送视频消息(六)
  13. Android技术分享| 超简单!给 Android WebRTC增加美颜滤镜功能
  14. linux远程桌面太卡,确保远程桌面管理顺畅稳定的方法
  15. 微积分-求导必背公式
  16. Nginx的rewrite(地址重定向)剖析
  17. (二)Chrome新标签页的设置
  18. 2009级 华中科技大学 计算机学院 本科生名单,华中科技大学2009年本科特优生名单...
  19. 看设计师大牛如何将用户体验与建站融会贯通
  20. PHP如何开发订单通知短信。

热门文章

  1. 7-60 高速公路超速处罚 (15 分)
  2. 基于Python实现五大常用分类算法(原理+代码)
  3. latex 字符上一横,箭头等显示方式
  4. 07.爱芳地产项目小程序全栈项目经验(已上线)
  5. 【升级版学生信息管理系统员工工资信息管理系统】+文件操作+更多细节
  6. cordova指定版本_cordova入门教程
  7. 如何在Nginx服务器上安装阿里云ssl证书
  8. 300篇天涯论坛经典帖子合集分享(收藏版本)
  9. Vancl陈年:京东当当图书大战打得还不够惨烈
  10. Java面板容器组件 之 JPanel