PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)


Posted in PHP onSeptember 11, 2016

本文实例讲述了PHP入门教程之使用Mysqli操作数据库的方法。分享给大家供大家参考,具体如下:

Demo1.php

<?php
  //使用 mysqli 对象操作数据库
  //创建 mysqli 对象(资源句柄)
  $_mysqli = new mysqli();
  //连接数据库 1.主机名(ip) 2.账户 3.密码 4.数据库
  //mysqli_connect 函数 == $_mysqli -> connect();
  $_mysqli -> connect('localhost','root','123456','guest');
  //断开 MySQL mysqli_close() == $_mysqli -> close();
  $_mysqli -> close();
?>

Demo2.php

<?php
  //不用 connect ,直接使用构造方法
  $_mysqli = new mysqli('localhost','root','123456','guest');
  //单独选择一个数据库
  //这里选择的数据库会替代上面的数据库
  //为了避免这些麻烦,尽量不用去单独指向了
  //$_mysqli -> select_db('school');
  $_mysqli -> close();
?>

Demo3.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  //连接 mysql
  //当你参数出现错误,导致连接错误的时候,
  //$_mysqli 这个对象就没有创建成功,也就是说,没有资源句柄的功能
  //就是没有调用 mysqli 下的方法和属性的能力了
  @$_mysqli = new mysqli('localhost','root','123456','guest');
  //为什么要用函数去捕捉呢?
  //为什么不用面向对象的方式去捕捉呢?
  if(mysqli_connect_errno()){
    echo '数据库连接出现了错误,错误的信息是:'.mysqli_connect_error();
    exit();
  }
  $_mysqli->close();
?>

Demo4.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  //连接 mysql
  //当你参数出现错误,导致连接错误的时候,
  //$_mysqli 这个对象就没有创建成功,也就是说,没有资源句柄的功能
  //就是没有调用 mysqli 下的方法和属性的能力了
  @$_mysqli = new mysqli('localhost','root','123456','guest');
  //为什么要用函数去捕捉呢?
  //为什么不用面向对象的方式去捕捉呢?
  if(mysqli_connect_errno()){
    echo '数据库连接出现了错误,错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //$_mysqli -> select_db('fsdfd');
  //数据库操作时发生的错误
  if($_mysqli -> errno){
    echo '数据库操作错误:'.$_mysqli -> error;
  }
  $_mysqli->close();
?>

Demo5.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if(mysqli_connect_errno()){
    echo '数据库连接出现了错误,错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli -> set_charset('utf8');
  //创建一句 SQL ,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //执行 SQL 语句,把结果集赋给 $_result
  $_result = $_mysqli -> query($_sql);
  //var_dump($_result); //object(mysqli_result)#2 (0) { }
  //通过结果集,我要取得第一行数据
  //fetch_row();是返回的一个数组,里面是第一条数据的集合
  print_r( $_result -> fetch_row());
  //运行一次,指针下移一条
  print_r( $_result -> fetch_row());
  //销毁结果集
  $_result -> free();
  $_mysqli->close();
?>

Demo6.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //使用索引数组取值
  //print_r($_result->fetch_row());
  $_row = $_result->fetch_row();
  echo $_row[3];
  //遍历,下标很难记[3]
  while (!!$_row = $_result->fetch_row()) {
    echo $_row[3].'<br />';
  }
  $_mysqli->close();
?>

Demo7.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //使用关联数组取值
  //print_r($_result->fetch_assoc());
  $_assoc = $_result->fetch_assoc();
  echo $_assoc['tg_username'];
  //遍历
  while (!!$_assoc = $_result->fetch_assoc()) {
    echo $_assoc['tg_username'].'<br />';
  }
  $_mysqli->close();
?>

Demo8.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //使用索引+关联数组取值
  //print_r($_result->fetch_array());
  $_array = $_result->fetch_array();
  echo $_array[3];
  echo $_array['tg_username'];
  //遍历.....
  $_mysqli->close();
?>

Demo9.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //使用OOP的方法object
  //print_r($_result->fetch_object());
  echo $_result->fetch_object()->tg_username;
  //使用OOP遍历
  while (!!$_object = $_result->fetch_object()) {
    echo $_object->tg_username.'<br />';
  }
  $_mysqli->close();
?>

Demo10.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user limit 0,10";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //我要看下我选择了多少行
  echo $_result->num_rows;
  //我影响了多少行呢
  echo $_mysqli->affected_rows;
  $_mysqli->close();
?>

Demo11.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "UPDATE tg_user SET tg_username='一站式建网站' WHERE tg_id=5";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //我要看下我选择了多少行
  echo $_result->num_rows;
  echo '|';
  //我影响了多少行呢
  echo $_mysqli->affected_rows;
  $_mysqli->close();
?>

Demo12.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //求出表中有多少个字段
  echo $_result->field_count;
  //获取字段的名字
// $_field = $_result->fetch_field();
// echo $_field->name;
// $_field = $_result->fetch_field();
// echo $_field->name;
//
// while (!!$_field = $_result->fetch_field()) {
//   echo $_field->name.'<br />';
// }
  //一次性取得所有的字段
  $_fields = $_result->fetch_fields();
  //echo $_fields[0]->name;
  foreach ($_fields as $_field) {
    echo $_field->name.'<br />';
  }
  $_mysqli->close();
?>

Demo13.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建一句SQL,获取数据库的表的数据
  $_sql = "SELECT * FROM tg_user";
  //创建一个结果集
  $_result = $_mysqli->query($_sql);
  //移动数据指针
  $_result->data_seek(9);
  $_row = $_result->fetch_row();
  echo $_row[3];
  //移动字段指针
  $_result->field_seek(3);
  $_field = $_result->fetch_field();
  echo $_field->name;
  $_mysqli->close();
?>

Demo14.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建三个修改的SQL语句
  $_sql .= "UPDATE tg_article SET tg_username='喀喀喀' WHERE tg_id=1;";
  $_sql .= "UPDATE tg_flower SET tg_fromuser='喀喀喀' WHERE tg_id=1;";
  $_sql .= "UPDATE tg_friend SET tg_fromuser='喀喀喀' WHERE tg_id=1";
  //使用通知执行的方法
  $_mysqli->multi_query($_sql);
  //普通只能执行sql的方法是:$_mysqli->query($_sql);
  $_mysqli->close();
?>

Demo15.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','testguest');
  //数据库连接时发生的错误
  if (mysqli_connect_errno()) {
    echo '数据库连接出现了错误.错误的信息是:'.mysqli_connect_error();
    exit();
  }
  //设置一下编码
  $_mysqli->set_charset('utf8');
  //创建三条选择语句
  $_sql .= "SELECT * FROM tg_photo;";
  $_sql .= "SELECT * FROM tg_user;";
  $_sql .= "SELECT * FROM tg_friend";
  if ($_mysqli->multi_query($_sql)) {
    //获取当前的结果集
    $_result = $_mysqli->store_result();
    print_r($_result->fetch_row());
    echo '<br />';
    //将结果集的指针移到下一条
    $_mysqli->next_result();
    $_result = $_mysqli->store_result();
    if (!$_result) {
      echo '第二条SQL语句有五!';
      exit();
    }
    print_r($_result->fetch_row());
    echo '<br />';
    $_mysqli->next_result();
    $_result = $_mysqli->store_result();
    if (!$_result) {
      echo '第三条SQL语句有五!';
      exit();
    }
    print_r($_result->fetch_row());
  } else {
    echo '第一条SQL语句有误';
    exit();
  }
  $_mysqli->close();
?>

Demo16.php

<?php
  header ( 'Content-Type:text/html; charset=utf-8;' );
  $_mysqli = new mysqli('localhost','root','123456','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语句有吴,那么就执行回滚,否则就手工提交
    $_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();
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 PHP
PHP的博客ping服务代码
Feb 04 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
php合并数组中相同元素的方法
Nov 13 PHP
反射调用private方法实践(php、java)
Dec 21 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
Mar 18 PHP
Yii2中datetime类的使用
Dec 17 PHP
php mysql数据库操作类(实例讲解)
Aug 06 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 #PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 #PHP
PHP入门教程之PHP操作MySQL的方法分析
Sep 11 #PHP
PHP入门教程之图像处理技巧分析
Sep 11 #PHP
PHP函数引用返回的实例详解
Sep 11 #PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 #PHP
详解PHP中array_rand函数的使用方法
Sep 11 #PHP
You might like
php面象对象数据库操作类实例
2014/12/02 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
如何实现JS函数的重载
2006/09/22 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
无限循环轮播图之运动框架(原生JS实现)
2017/10/01 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
layui table 参数设置方法
2018/08/14 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
使用Python的PEAK来适配协议的教程
2015/04/14 Python
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
Python告诉你木马程序的键盘记录原理
2019/02/02 Python
windows下python虚拟环境virtualenv安装和使用详解
2019/07/16 Python
django rest framework使用django-filter用法
2020/07/15 Python
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
分布式数据库需要考虑哪些问题
2013/12/08 面试题
工作失误检讨书范文大全
2014/01/13 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
党支部四风整改方案
2014/10/25 职场文书
三八妇女节慰问信
2015/02/14 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS