前  言

 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. 分享一个完整的Mybatis分页解决方案

    Mybatis 的物理分页是应用中的一个难点,特别是配合检索和排序功能叠加时更是如此. 我在最近的项目中开发了这个通用分页器,过程中参考了站内不少好文章,阅读源码帮助更大minglisoft.cn/t ...

  2. 浅谈一下web移动端基本

    屏幕尺寸.屏幕分辨率.屏幕像素密度 屏幕尺寸: 指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米. 常见的屏幕尺寸有2.4.2.8.3.5.3.7.4.2.5.0.5.5.6.0等. 屏幕分辨率 ...

  3. VR全景智慧城市

    随着虚拟现实产业的发展,我国对虚拟现实产业也越来越重视了.我国虚拟现实VR市场增长速度很快,市场活跃性很高,很多人都看好我国的虚拟现实VR市场,而且未来国内虚拟现实VR市场的销量还将有更大的增长.据赛 ...

  4. ASP实现计算机爱好者网站,可以直接浏览

    利用ASP制作的计算机爱好者协会网站,内容比较全面,具有母版和子页的功能,利用ACCESS数据库进行资源存储.适合新手学习和网页制作比赛参考 下载地址:http://download.csdn.net ...

  5. 基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;

    import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; class W ...

  6. Nginx教程(三) Nginx日志管理

    Nginx教程(三) Nginx日志管理 1 日志管理 1.1 Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某 ...

  7. 软件需求规格说明书(spec)

    1.spec 的目标是什么,spec 的目标不包括什么? 我们的目标是对用户发布的各种需求(需要伙伴的需求)进行处理,使别的用户可以看到信息,并且成功找到合适的伙伴一起! 不包括对用户之间的联系. 2 ...

  8. Lambda语言篇 —— lambda, 方法引用, 目标类型和默认方法

    本文介绍了Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想.这些特性包括: lambda表达式(又被成为"闭包"或"匿名方法") 方法 ...

  9. Sampling Distributions and Central Limit Theorem in R(转)

    The Central Limit Theorem (CLT), and the concept of the sampling distribution, are critical for unde ...

  10. springboot 1.5.2 thymeleaf 添加templates 静态资源访问路径

    从velocity 模板切换到thymeleaf 后, 默认模板位置为templates , 有时候静态资源方在该目录下会出现访问404错误 解决办法: application.properties ...