前  言

 php 

 php中的数据库扩展mysql语法--本篇学习都是通过使用数字天堂的HBuider开发环境,连接mysql数据.介绍php连接mysql数据库的代码与函数。

本篇学习主要有两个部分:

①【面向过程】
  ②【面向对象】
 
内容大同小异:
        一、连接数据库
        二、检测数据库连接是否成功--连接数据库同时判断
        三、选择数据库
        四、编写SQL语句
        五、执行SQL语句--代码执行之后,返回的结果集
        六、处理结果集的一些函数
        七、释放查询资源结果集
        八、关闭数据库连接
        
          

以下所有代码HBuider中建立PHP文件实施。

1、面向过程
① 连接数据库 :
     连接数据库 使用:mysqli_connect
          参数: ① 主机地址 ② mysql用户名 ③ mysql密码 ④ 选择连接的数据库 ⑤ 端口号
          返回: 如果连接成功,返回资源类型的表示符号
                   如果连接失败,则返回false
        如果我们与MYSQL建立的链接不止一条,那么以后操作数据库的各种函数都必须传入返回的标识符号;
        如果我们与MYSQL建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个表示符号

  //$conn = mysqli_connect("xxx.0.0.x","root","","mydb");//密码为零可以省略
       $conn = mysqli_connect("xxx.0.0.x","root","1");  这行代码在所有代码之前的必须存在。

图片:↓↓↓↓↓↓↓↓↓↓


      图 1.1 Navicat Premium中的mysql主机中的mydb数据库
    

② 检测数据库连接是否成功
   mysqli_connect_errno():返回上次连接数据库的错误号,连接成功返回0
        mysqli_connect_error():返回上次连接数据库的错误信息
       代码如下 ↓↓↓
  
       if(mysqli_connect_errno()){
        die("lalalala:".mysqli_connect_error());
    }
    var_dump($conn);

打印的效果图片:↓↓↓↓↓↓↓↓↓↓

//连接数据库同时判断
    $conn = mysqli_connect("127.0.0.1","root") or die("lalalala:".mysqli_connect_error()); ;

③  选择数据库:mysqli_select_db
  参数: ① 资源标识符 ② 选择的数据库名称
       返回: 连接成功返回true,链接失败返回false
     
       如果修改数据库成功,则西苑标识符中的数据库就会发生变更
       如果修改失败,而没有通过代码终止操作,则后续代码可以使用原数据库继续执行。
     代码如下:
    //  ↓var_dump(mysqli_select_db($conn,"mydb1") or die("数据库选择失败") )
   效果图如下  ↓↓↓↓↓↓↓↓↓
    
      var_dump(mysqli_select_db($conn,"mydb") or die("数据库选择失败"));      
   效果图如下  ↓↓↓↓↓↓↓↓↓
    
④  编写SQL语句
  mysql语句中的增删改查
⑤  执行SQL语句
        如果是增、删、改,将返回布尔型的是否成功;
        如果是查询,返回资源结果集
        如果查询失败,返回false

图片:↓↓↓↓↓↓↓↓↓

        图片 1.2 数据库mydb中的表tb1中的表格内容

代码如下:
  //编写SQL语句--查询tb1表单中的所有数据
  $sql = "select * from tb1";

  //数据库mydb中执行执行sql语句。变量$conn看上文选择数据库
  $set = mysqli_query($conn, $sql);
  var_dump($set);
效果图:
  

        图 1.3 $set返回的结果集

⑥  处理结果集的函数(一)
  ↓↓承接上文↓↓
  //DQL时:返回资源结果集中的行数
       var_dump(mysqli_num_rows($set));
效果图:
        //DQL时:返回资源结果集中的字段(列)
        var_dump(mysqli_num_fields($set));
效果图:
 
⑦  处理结果集的函数(二) 
  处理结果集,返回关联数组和索引数组
        mysqli_fetch_array()
        参数 ① :需要处理的结果集
        参数 ② :返回哪种数组格式
                    MYSQL_ASSOC   关联
                    MYSQL_NUM        索引
                    MYSQL_BOTH        默认,同时产生两种数组
代码如下(承接上文):
    var_dump(mysqli_fetch_array($set));
效果图:

   同时打印关联数组和索引数组
代码如下(承接上文):
    var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果图:

//下方代码也返回关联数组同上图一样↑
 var_dump(mysqli_fetch_assoc($set));

代码如下(承接上文):
    var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
效果图:

//下方代码也返回索引数组同上图一样↑
 var_dump(mysqli_fetch_row($set));

⑧  处理结果集的函数(三)
  //   结果集复位到最开始
  // mysqli_data_seek($set,0)
代码如下:
  //   结果集复位到最开始
  mysqli_data_seek($set,0);
  //打印表单第一组数据
    var_dump(mysqli_fetch_row($set));
  //打印表单第二组数据
    var_dump(mysqli_fetch_row($set));
    //释放查询资源结果集
    mysqli_free_result($set);
    //关闭数据库链接
    mysqli_close($conn);
 
 <?php
header("Content-type:text/html;charset=utf-8"); /*连接数据库 使用:mysqli_connect
参数: ① 主机地址 ② mysql用户名 ③ mysql密码 ④ 选择连接的数据库 ⑤ 端口号
返回: 如果连接成功,返回资源类型的表示符号
如果连接失败,则返回false
* 如果我们与MYSQL建立的链接不止一条,那么以后操作数据库的各种函数都必须传入返回的标识符号;
* 如果我们与MYSQL建立的连接只有一条,那么以后操作数据库的各种函数就不必传入这个表示符号
*
*
*/
$conn = mysqli_connect("127.0.0.1","root","","mydb");//密码为零可以省略
//$conn = mysqli_connect("127.0.0.1","root","1"); /* 检测数据库连接是否成功
* mysqli_connect_errno():返回上次连接数据库的错误号,连接成功返回0
* mysqli_connect_error():返回上次连接数据库的错误信息
* ↓↓↓ */ if(mysqli_connect_errno()){
die("lalalala:".mysqli_connect_error());
}
var_dump($conn); //连接数据库同时判断
$conn = mysqli_connect("127.0.0.1","root") or die("lalalala:".mysqli_connect_error()); ; /* 选择数据库mysqli_select_db
* 参数: ① 资源标识符 ② 选择的数据库名称
* 返回: 连接成功返回true,链接失败返回false
*
* 如果修改数据库成功,则西苑标识符中的数据库就会发生变更
* 如果修改失败,而没有通过代码终止操作,则后续代码可以使用原数据库继续执行。
* */
//var_dump(mysqli_select_db($conn,"mydb1") or die("数据库选择失败") ) var_dump(mysqli_select_db($conn,"mydb") or die("数据库选择失败")); /*
* 设置字符集编码格式mysqli_set_charset()
* 只能设置为utf8而不是utf-8
* */
mysqli_set_charset($conn,"utf8") or die("数据库编码集设置失败"); /* 编写SQL语句
* */
$sql = "select * from tb1";
/*<<<str
INSERT INTO tb1 (username,age,sex) VALUES ("张三","122","女");
str;
* */
/* 执行SQL语句
* 如果是增、删、改,将返回布尔型的是否成功;
* 如果是查询,返回资源结果集
*
* 如果查询失败,返回false
* */
$set = mysqli_query($conn, $sql); //DML时,返回上一次操作时,受影响的行数
//var_dump(mysqli_affected_rows($conn)) //执行插入语句时,返回上次最新插入的主键ID
//var_dump(mysqli_insert_id($conn)); var_dump($set); //DQL时:返回资源结果集中的行数
var_dump(mysqli_num_rows($set));
//DQL时:返回资源结果集中的字段(列)
var_dump(mysqli_num_fields($set)); /* 处理结果集,返回关联数组和索引数组
* mysqli_fetch_array()
* 参数 ① :需要处理的结果集
* 参数 ② :返回哪种数组格式
* MYSQL_ASSOC 关联
* MYSQL_NUM 索引
* MYSQL_BOTH 默认,同时产生两种数组
* */ var_dump(mysqli_fetch_array($set));
var_dump(mysqli_fetch_array($set,MYSQL_ASSOC));
var_dump(mysqli_fetch_array($set,MYSQL_NUM)); //返回关联数组
var_dump(mysqli_fetch_assoc($set));
//返回索引数组
var_dump(mysqli_fetch_row($set));
//返回对象
var_dump(mysqli_fetch_object($set));
var_dump(mysqli_fetch_object($set)); /* mysqli_data_seek($set,0)
* 结果集复位到最开始
* */
mysqli_data_seek($set,0);
var_dump(mysqli_fetch_row($set));
var_dump(mysqli_fetch_row($set)); /*返回结果集每一列的字段信息。(字段名、表明、数据库名、字段类型、长度等……) */
//var_dump(mysqli_fetch_field($set)); //释放查询资源结果集
mysqli_free_result($set); //关闭数据库链接
mysqli_close($conn); ?>

面向过程

2、面向对象
   
① 连接数据库
    $conn = @new mysqli("xxx.0.0.x","root","","mydb");
② 返回连接错误
 $conn->connect_errno
③ 返回连接信息
  $conn->connect_error
④ 选择数据库
  $conn->select_db("mydb")
⑤ 设置字符集编码
 $conn->set_charset("utf8")
代码如下:

     //连接数据库
$conn = @new mysqli("127.0.0.1","root","","mydb"); //↓查看连接数据库的返回内容
// var_dump ($conn) if($conn->connect_errno){//返回连接错误号。
//↓返回连接错误信息
die("连接失败".$conn->connect_error);
}
//↓选择数据库
$conn->select_db("mydb") or die("选择数据库失败:".$conn->error); 

 //如果出现错误则在页面打印如下:比如在没有mydb1把上表中的mydb改为mydb1,在页面就会出现如下样式

        //↓设置字符集编码
    $conn->set_charset("utf8")    or die("设置字符集失败:".$conn->error);   //↑同上

 //准备sql语句
$sql = <<<sql
select * from tb1;
sql; // 执行SQL语句,返回结果集或者布尔类型true/false
$res = $conn->query($sql);
var_dump($res); // 返回结果集中的字段数
var_dump($res->field_count);
// 返回结果集中的总行数
var_dump($res->num_rows); // 返回关联数组和索引数组
var_dump($res->fetch_array());
// 返回索引数组
var_dump($res->fetch_row());
// 返回关联数组
var_dump($res->fetch_assoc());
// 返回一个对象
var_dump($res->fetch_object()); // 将结果集指针移到指定位置
$res->data_seek(0); // 返回结果集中的一个字段,并将指针移到下一列
var_dump($res->fetch_field());
// 直接返回结果集中的所有字段
var_dump($res->fetch_fields()); //释放结果集资源
$res->close();// $res->free();
//关闭数据库连接
$conn->close();

⑥⑦⑧⑨⑩

学习时候的笔记,可能会有一些错误的地方,欢迎各位的批评指点。

反思,复盘,每天收获一点---------------------期待更好的自己

学习php语法--数据库扩展(总结篇)的更多相关文章

  1. MongoDB索引(一) --- 入门篇:学习使用MongoDB数据库索引

    这个系列文章会分为两篇来写: 第一篇:入门篇,学习使用MongoDB数据库索引 第二篇:进阶篇,研究数据库索引原理--B/B+树的基本原理 1. 准备工作 在学习使用MongoDB数据库索引之前,有一 ...

  2. iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇

    iOS超全开源框架.项目和学习资料汇总--数据库.缓存处理.图像浏览.摄像照相视频音频篇 感谢:Ming_en_long 的分享 大神超赞的集合,http://www.jianshu.com/p/f3 ...

  3. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  4. 工作效率-十五分钟让你快速学习Markdown语法到精通排版实践备忘

    关注「WeiyiGeek」公众号 设为「特别关注」每天带你玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录: 0x00 前言简述 ...

  5. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  6. ICML 2018 | 从强化学习到生成模型:40篇值得一读的论文

    https://blog.csdn.net/y80gDg1/article/details/81463731 感谢阅读腾讯AI Lab微信号第34篇文章.当地时间 7 月 10-15 日,第 35 届 ...

  7. LINQ学习系列-----1.3 扩展方法

    这篇内容继续接着昨天的Lambda表达式的源码继续下去.昨天讲了Lambda表达式,此篇讲扩展方法,这两点都是Linq带来的新特性.    一.扩展方法介绍   废话不多说,先上源码截图: 上图中Ge ...

  8. 封装自己的dapper lambda扩展-设计篇

    前言 昨天开源了业务业余时间自己封装的dapper lambda扩展,同时写了篇博文<编写自己的dapper lambda扩展-使用篇>简单的介绍了下其使用,今天将分享下它的设计思路 链式 ...

  9. 学习Angularjs向数据库添加数据

    今天学习angularjs向数据库添加数据. 学习此篇,得从以往几篇开始,因为那还有创建数据表等演示. 现在来创建一个添加的存储过程: SET ANSI_NULLS ON GO SET QUOTED_ ...

随机推荐

  1. HTML5工具做屏幕自适应的两种方法

    近一两年,HTML5在中国很火,也出了不少HTML5工具和模板.别的先不说,对于不同的H5工具,解决屏幕自适应问题的区别是什么? 简单来说,感应式设计是当用不同设备访问时,能够根据设备的宽度和高度对设 ...

  2. 案例分享|某医药集团的BI建设案例

    相比于传统型BI,越来越多的企业开始接受并青睐新型的自助式BI,因其项目上线快,失败风险小,简单易用,颇受赞誉.以下是某医药集团上线帆软BI系统FineBI的案例,从用途架构.指标分析.和信息交互几方 ...

  3. 北京赛车PK10 幸运飞艇 重庆时时彩 PC蛋蛋 快乐8 福彩3D 十分彩

    QQ:1395239152 2017-3.14最新修复完整运营版时时彩源码PC+手机版本功能齐全 重庆时时彩是一种经中国国家财政部批准,重庆市福利彩票发行中心承销的福彩快开彩票,2元1注,分为&quo ...

  4. JAVA-Socket通信笔记

    JAVA - Socket 从开学到现在 也学了三个月时间的java了,一直在 在 语法和基本使用上周旋,井底之娃一枚. 这两天 有学长指点,花了两天的时间 学习了java多线程和socket的简单使 ...

  5. spring---简介

    spring spring是什么? 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的 ...

  6. Spring+SpringMVC+MyBatis深入学习及搭建(三)——MyBatis全局配置文件解析

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6874672.html 前面有写到Spring+SpringMVC+MyBatis深入学习及搭建(二)——My ...

  7. 学习SpringMVC中优秀的代码编写风格

    在org.springframework.web.servlet.FrameworkServlet 中有下面这段代码 private class ContextRefreshListener impl ...

  8. 详细介绍php中的命名空间

    php命名空间的一个最明确的作用是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误.上一章节介绍了什么是php命名空间.php官网已很明确的进行了定义并形象化解释,这 ...

  9. centos7下,解决Apache错误日志文件过大问题

    1,日志文件太大问题   第一步:停止Apache服务的所有进程,删除 /var/log/httpd目录下的 error.log.access.log文件 第二步:打开 /etc/httpd/conf ...

  10. Linux盘符绑定槽位

    服务器下的硬盘主有机械硬盘.固态硬盘以及raid阵列,通常内核分配盘符的顺序是/dev/sda./dev/sdb- -.在系统启动过程中,内核会按照扫描到硬盘的顺序分配盘符(先分配直通的,再分配阵列) ...