php学习笔记-连接操作mysq数据库(基础)-day08

news2025/1/18 6:24:04

php学习笔记-连接操作mysq数据库-day08

  • php中常用的mysql操作函数
    • 1.连接mysql服务器
      • mysqli_connect()
    • 2.设置数据库字符集 和 发送sql
      • mysqli_query() 函数 可以用来设置数据库字符集。
    • 3.关闭mysql服务器连接
      • mysqli_close();
    • 4.选择要操作的数据库
      • mysqli_select_db()
    • 5.结果集释放
      • mysqli_free_result()
    • 6.获取sql执行后影响的表记录行数
      • mysqli_affected_rows()
      • mysql_insert_id()
    • 7.遍历结果集中的数据
      • mysqli_fetch_row ( )
      • mysqli_fetch_array ()
  • 小练习
    • 书籍查询并且输出结果集数据
    • mysql连接模板

php中常用的mysql操作函数

首先,放一段链接 https://www.php.net/manual/zh/function.mysql-connect,mysql_connect及其诸多函数已经自php5.5.0废弃,然后逐步移除中,使用 mysqli 或者 pdo_mysql中的函数来替代。
在这里插入图片描述

1.连接mysql服务器

mysqli_connect()

语法格式:mysqli_connect ( string hostname,string username, string password,string database,int port,string socket): mysqli | false
函数功能:如果成功链接mysql服务器,则返回一个与mysql服务器连接的标识 mysqli ,如果连接失败则返回 false。

在这里插入代码片

2.设置数据库字符集 和 发送sql

mysqli_query() 函数 可以用来设置数据库字符集。

语法格式:mysqli_query(mysqli $mysqli,string "set names 字符集"); (字符集是 gbk | utf8 )
函数功能:将mysql的字符集设置为指定的字符集。

tip:mysqli_query() 函数 完整的参数如下:
mysqli_query(mysqli $mysql, string $query, int $result_mode = MYSQLI_STORE_RESULT): mysqli_result | bool
query 可以是设定字符集或者相应的sql语句(如:select sid from student | insert into xxx.... | update xxxx set.... | delete from ..... ),如果执行的查询sql成功,则返回一个结果集 mysqli_result。

3.关闭mysql服务器连接

mysqli_close();

语法格式:bool mysqli_close(mysqli $mysqli )
函数功能:关闭mysql服务器连接

4.选择要操作的数据库

mysqli_select_db()

语法格式:bool mysqli_select_db( mysqli $mysqli , string database_name)
函数功能:设置当前想要操纵的数据库

5.结果集释放

mysqli_free_result()

语法格式:mysqli_free_result ( mysqli_result $result)
函数功能:释放结果集所占用的资源,执行成功返回true,失败返回false.

6.获取sql执行后影响的表记录行数

mysqli_affected_rows()

语法格式:mysqli_affected_rows(mysqli $mysql): int|string
函数功能:获取上一个 MySQL 操作中受影响的行数

mysql_insert_id()

语法格式:mysql_insert_id(resource $link_identifier = ?): int
函数功能:取得上一步 INSERT 操作产生的 ID

mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。

如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。

7.遍历结果集中的数据

mysqli_fetch_row ( )

语法格式:mysql_fetch_row(resource $result): array
函数功能:返回根据所取得的行生成的数组,如果没有更多行则返回 false。
mysql_fetch_row() 从和指定的结果标识关联的结果集中取得一行数据并作为数组返回。每个结果的列储存在一个数组的单元中,偏移量从 0 开始。
依次调用 mysql_fetch_row() 将返回结果集中的下一行,如果没有更多行则返回 false。

mysqli_fetch_array ()

语法格式:mysql_fetch_array(resource $result, int $result_type = ?): array
函数功能:从结果集中取得一行作为关联数组
参数:
resource 型的结果集。此结果集来自对 msql_query() 的调用。

result_type
接受以下常量值: MSQL_ASSOC,MSQL_NUM 和 MSQL_BOTH,默认为 MSQL_BOTH。如果用了 MYSQL_BOTH,将得到一个同时包含关联和数字索引的数组。用 MYSQL_ASSOC 只得到关联索引(如同 mysql_fetch_assoc() 那样),用 MYSQL_NUM 只得到数字索引(如同 mysql_fetch_row() 那样)。

小练习

书籍查询并且输出结果集数据

创建数据表

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for book
-- ----------------------------
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book`  (
  `id` int(0) NOT NULL AUTO_INCREMENT,
  `bookName` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  `bookPrice` decimal(10, 2) NOT NULL,
  `author` varchar(30) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES (1, '平凡的世界', 59.00, '路遥');
INSERT INTO `book` VALUES (2, '三体', 99.00, '刘慈欣');
INSERT INTO `book` VALUES (3, '人间失格', 44.00, '太宰治');
INSERT INTO `book` VALUES (4, '白夜行', 38.00, '东野圭吾');

SET FOREIGN_KEY_CHECKS = 1;

创建testDB.php

用来连接数据库和执行sql,以及数据显示输出

<?php

// php 连接 mysql

// 1.resource mysql_connect (string hostname,string username,string password)

// 连接成功则返回一个连接标识,连接失败则返回一个 false

$hostname = "localhost"; // mysql服务器名
$username = "root"; // 账号
$password = "root"; // 密码

// 连接数据库
$conn = @mysqli_connect($hostname,$username,$password,) or die("连接数据库失败");

// 编写sql 通过sql指定要访问的数据库和表
$sql1 = "select * from phpdemo.book";

// 设定编码
mysqli_query($conn,"set names utf-8");
// 操纵数据库,查询一下信息
$rs = mysqli_query($conn,$sql1);


// 将结果集抽离出来,使用最常用的表格


echo "<table>";
echo "<tr><th>id</th><th>书名</th><th>价格</th><th>作者</th></tr>";
while ($row = mysqli_fetch_array($rs)){
    echo "<tr>".
            "<td>".$row['id']."</td>".
            "<td>".$row['bookName']."</td>".
            "<td>".$row['bookPrice']."</td>".
            "<td>".$row['author']."</td>".
        "</tr>";
}
echo "</table>";
// 释放结果集内存
mysqli_free_result($rs);



// 关闭数据库连接
mysqli_close($conn);

在这里插入图片描述

mysql连接模板

// php操纵mysql数据库的模板
class dataBase{

    public $dbConn = null;

     function getConnection()
    {

        $hostname = "localhost";
        $username = "root";
        $password = "root";
        $database = "phpdemo";
        global $dbConn;

        if(mysqli_connect($hostname,$username,$password)){
            $dbConn = mysqli_connect($hostname,$username,$password);
        }else{
            echo "数据库连接失败,请检查主机名,用户名,密码";
            die(mysqli_error());
        }
        mysqli_query($dbConn,"set names utf-8");// 设定字符集编码
        if(mysqli_select_db($dbConn,$database)){
            echo "连接成功";
        }else{
            echo "连接失败,检查数据库名是否正常";
            die(mysqli_error());
        }
    }


    function closeConnection():void
    {
        global  $dbConn;
        if($dbConn){
            mysqli_close($dbConn) or die (mysqli_error($dbConn));
        }
    }
}

tip:“这里对php中的类还没有详细的学过,所以模板还可能有不足的地方”


今天是小年,小年快乐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/161901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#大型在线学习平台源码(PC端+手机端)

本套源码目录结构清晰、代码层次分明、文档齐全。源码分享&#xff01;需要源码学习可私信我获取。 系统简介 中小学教育平台是一个集学、练、考于一体的在线教育平台&#xff0c;可以帮助中小学教育机构建设网络课堂&#xff0c;用于同步课程、专题课堂、兴趣课堂等网络教育的…

当用户输入一堆这样的字符串到 Elasticsearch ?

1、问题引出如下样例数据已导入 Elasticsearch&#xff0c;如何实现特定字段检索&#xff1f;并计算出特定子字段的长度&#xff1f;"message": "[策略排序]排序后结果:[{\"intentItems\":[\"200001\"],\"level\":1,\"modul…

2021帆软杯一等奖 | 《游乐园综合管理系统》

# 作品主题——游乐园综合管理系统 #作品简介&#xff1a;该获奖作品来自零代码开发赛道。针对一些个人经营、没有统一规范的游乐园&#xff0c;希望通过创建一个简单、高效的系统应用&#xff0c;管理人员能够通过对表单的简单操作就能管理游乐园&#xff0c;如获取工作人员信…

程序分析-动态程序切片

最近在调研符号执行工具优化方式时&#xff0c;发现好几篇工作都用到了动态程序切片&#xff0c;以前大部分接触的都是静态切片&#xff0c;对动态切片几乎不了解。所以开始学习动态切片&#xff0c;我主要参考的是90年的一篇上古paper。 1.静态依赖图和静态切片 说到程序切片…

Obsidian Templater 批量新建笔记

Obsidian Templater 批量新建笔记 背景 工作中的新项目都有这么几个固定的笔记&#xff0c;比如项目背景、原理图设计、PCB设计、调试等&#xff0c;每个笔记文件又有一些固定的内容&#xff0c;想着在开始一个新项目时&#xff0c;一次性把这些笔记都建好&#xff0c;并且统…

一文教会你 如何在Github中创建仓库?如何将多个项目放到一个仓库中管理?如何将本地项目上传到GitHub中?

文章目录前言1、如何在GitHub中创建仓库1.1 点击New repository1.2 填写仓库的基本信息1.3 完成创建2 、克隆仓库地址到本地2.1 克隆地址2.2 克隆到本地2.3 将后端代码项目提交到远程服务器2.4 将前端代码项目提交到远程服务器3、Github上查看自己上传项目代码4、使用这个方式存…

【程序分析】Code Lifting

我理解&#xff0c;Code Lifting和反编译的概念类似 常规的编译过程是这样的&#xff1a; 这是一个从高级形式到低级形式的过程&#xff0c;一般叫做 lowering 而反编译&#xff0c;是这样一个过程&#xff1a; 这个过程是完全相反的&#xff0c;叫做lifting 需要注意 Bi…

FPGA:逻辑函数的卡诺图化简法

文章目录最小项与最小项表达式最小项的定义最小项的性质逻辑函数的最小项表达式卡诺图化简法用卡诺图表示逻辑函数卡诺图的引出两变量卡诺图三变量卡诺图四变量卡诺图已知逻辑函数真值表&#xff0c;画卡诺图已知逻辑函数画卡诺图用卡诺图化简逻辑函数化简的依据化简的步骤用卡…

Hexo + Butterfly 侧边栏公众号

原文链接 &#xff1a;Hexo Butterfly 侧边栏公众号 推荐阅读 基于 Hexo 从零开始搭建个人博客&#xff08;一&#xff09;: 环境准备基于 Hexo 从零开始搭建个人博客&#xff08;二&#xff09;: 项目初识基于 Hexo 从零开始搭建个人博客&#xff08;三&#xff09;: 主题安…

Lichee_RV学习系列--stream移植

Lichee_RV学习系列文章目录 Lichee_RV学习系列—认识Lichee Rv Dock、环境搭建和编译第一个程序 Lichee_RV学习系列—移植dhrystone 文章目录Lichee_RV学习系列文章目录一、stream简介二、源码下载三、文件移植1、makefile文件编译makefile文件移植四、运行结果五、移植过程中…

【尚硅谷】Java数据结构与算法笔记08 - 查找算法

文章目录一、查找算法介绍二、线性查找算法三、二分查找算法3.1 思路分析3.2 代码实现四、插值查找算法4.1 思路分析4.2 代码实现4.3 注意事项五、斐波那契&#xff08;黄金分割法&#xff09;查找算法5.1 思路分析5.2 原理讲解5.3 代码实现一、查找算法介绍 在 java 中, 我们…

C++多线程入门及基础知识

什么是C多线程 线程即操作系统进行CPU任务调度的最小单位。C的多线程并发&#xff0c;简单理解的话就是&#xff0c;将任务的不同功能交由多个函数实现&#xff0c;创建多个线程&#xff0c;每个线程执行一个函数&#xff0c;一个任务就同时由不同线程执行。 什么时候使用多…

微信小程序:骨架屏的实现方法

骨架屏是为了展示一个页面骨架而不含有实际的页面内容&#xff0c;从渲染效率上来讲&#xff0c;骨架屏它并不能使首屏渲染加快。由于骨架屏的一些使用又向用户渲染了额外的一些内容&#xff0c;这些内容是额外添加的、本来是不需要渲染的&#xff0c;它反而从整体上加长了首屏…

Windows 虚拟磁盘驱动开发(采用原始办法实现类似Storport框架的相同功能)

其实以前讲述windows平台下的磁盘驱动的开发挺多&#xff0c;而且时间也是非常早。以下连接&#xff1a;https://blog.csdn.net/fanxiushu/article/details/9903123?spm1001.2014.3001.5501https://blog.csdn.net/fanxiushu/article/details/11713357?spm1001.2014.3001.5501…

游戏开发 状态同步

【状态同步】1、将所有的操作发送给Server&#xff08;T1&#xff09;&#xff0c;由Server计算&#xff08;T2&#xff09;&#xff0c;并返回结果&#xff08;T3&#xff09;。权威服务器架构能够防止很多的作弊&#xff0c;但是直接用这种方法会让游戏的响应变得迟缓。如果 …

three games 之 桌球

接下来介绍一些 Vue4 中的一些进阶使用&#xff0c;希望对大家有所帮助&#xff0c;谢谢。 如果文中有不对、疑惑的地方&#xff0c;欢迎在评论区留言指正&#x1f33b; 一、项目结构 Vuex 并不限制你的代码结构。但是&#xff0c;它规定了一些需要遵守的规则&#xff1a; …

移动硬盘怎么分区?

硬盘分区指的是硬盘上被划分出来的区块&#xff0c;可用于分类存储各种数据。而我们日常购买的移动硬盘通常来说分为两种&#xff0c;一种是买回来已分好区的&#xff0c;还有一种是未经过分区的。如果移动硬盘没有经过分区&#xff0c;那么在将它连接到电脑的USB接口时&#x…

android四大组件之四-BroadCast实现原理分析

前言&#xff1a; 一开始的目标是解决各种各样的ANR问题的&#xff0c;但是我们知道&#xff0c;ANR总体上分有四种类型&#xff0c;这四种ANR类型有三种是和四大组件相对应的&#xff0c;所以&#xff0c;如果想了解ANR发生的根因&#xff0c;对安卓四大组件的实现原理必须要…

伙伴云与飞书、金山办公一同入选亿欧2022中国数字化企业服务商TOP50

近日&#xff0c;由中关村国家自主创新示范区展示中心、中关村会展与服务产业联盟与亿欧联合举办的SHOWTECH2022-WIM 创新者年会”在京顺利召开&#xff0c;会上&#xff0c;亿欧网重磅发布《2022世界创新奖榜单》。伙伴云凭借10年来为企业数字化转型赋能的成功经验和卓越贡献&…

数据结构学习-队列

坚持看完&#xff0c;结尾有思维导图总结 这里写目录标题队列的定义于性质如何实现队列的功能初始化队列入队列出队列队列的销毁队列取队头数据队列取队尾数据判断队列是否为空判断队列长度总结队列的定义于性质 队列是一种数据结构&#xff0c;他储存数据的方式就和排队一样 …