PHP快速入门13-MySQL数据库与Redis操作

news2024/11/27 7:34:10

文章目录

  • 前言
  • 一、PHP连接MySQL
    • 1.1 建立数据库链接
    • 1.2 插入数据
    • 1.3 更新数据
    • 1.4 删除数据
    • 1.5 查询数据并输出结果
    • 1.6 查询数据并返回结果
    • 1.7 获取查询结果的行数
    • 1.8 获取查询结果的列数
    • 1.9 获取查询结果的字段名
    • 1.10 获取查询结果的字段类型
    • 1.11 获取上一次操作影响的行数
    • 1.12 开启事务
    • 1.13 设置字符集
    • 1.14 预处理语句
    • 1.15 关闭数据库连接
  • 二、PHP链接操作Redis
    • 2.1 安装Redis
    • 2.2 操作redis的30个例子
  • 总结


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战

在这里插入图片描述

一、PHP连接MySQL

PHP链接MySQL可以使用mysqli或PDO两种方式,其中mysqli是面向过程的,而PDO是面向对象的。以下是使用mysqli链接MySQL的示例代码:

1.1 建立数据库链接

$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

1.2 插入数据

$sql = "INSERT INTO users (name, age, email) VALUES ('John', 25, 'john@example.com')";
if (mysqli_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error:" . $sql . "<br>" . mysqli_error($conn);
}

1.3 更新数据

$sql = "UPDATE users SET name='Jane' WHERE id=1";
if (mysqli_query($conn, $sql)) {
    echo "记录更新成功";
} else {
    echo "Error:" . $sql . "<br>" . mysqli_error($conn);
}

1.4 删除数据

$sql = "DELETE FROM users WHERE id=1";
if (mysqli_query($conn, $sql)) {
    echo "记录删除成功";
} else {
    echo "Error:" . $sql . "<br>" . mysqli_error($conn);
}

1.5 查询数据并输出结果

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        echo "Name: " . $row["name"]. " - Age: " . $row["age"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "没有记录";
}

1.6 查询数据并返回结果

$sql = "SELECT * FROM users WHERE age > 18";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        print_r($row); // 输出结果数组
    }
} else {
    echo "没有记录";
}

1.7 获取查询结果的行数

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

echo "共有 ". mysqli_num_rows($result) . " 条记录";

1.8 获取查询结果的列数

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);

$num_columns = mysqli_field_count($conn);
echo "共有 ".$num_columns." 列";

1.9 获取查询结果的字段名

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
$fields = mysqli_fetch_fields($result);

foreach ($fields as $field) {
    echo $field->name."<br>";
}

1.10 获取查询结果的字段类型

$sql = "SELECT * FROM users";
$result = mysqli_query($conn, $sql);
$fields = mysqli_fetch_fields($result);

foreach ($fields as $field) {
    echo $field->type."<br>";
}

1.11 获取上一次操作影响的行数

$sql = "DELETE FROM users WHERE age < 18";
mysqli_query($conn, $sql);
echo "删除了 ". mysqli_affected_rows($conn) . " 条记录";

1.12 开启事务

mysqli_autocommit($conn, false);
mysqli_begin_transaction($conn);

// 执行一系列操作

if (成功) {
    mysqli_commit($conn);
} else {
    mysqli_rollback($conn);
}

1.13 设置字符集

mysqli_set_charset($conn, "utf8");

1.14 预处理语句

$stmt = mysqli_prepare($conn, "INSERT INTO users (name, age, email) VALUES (?, ?, ?)");
mysqli_stmt_bind_param($stmt, "sis", $name, $age, $email);

$name = "John";
$age = 25;
$email = "john@example.com";
mysqli_stmt_execute($stmt);

1.15 关闭数据库连接

mysqli_close($conn);

二、PHP链接操作Redis

2.1 安装Redis

PHP链接redis:

  1. 首先需要安装redis扩展,可以使用pecl命令进行安装:pecl install redis
  2. 在php.ini文件中添加extension=redis.so
  3. 使用以下代码链接redis数据库:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

其中’127.0.0.1’是redis主机地址,6379是redis端口号。

2.2 操作redis的30个例子

  1. 设置key和value: $redis->set('key', 'value');
  2. 获取key的值: $redis->get('key');
  3. 判断key是否存在: $redis->exists('key');
  4. 删除key: $redis->del('key');
  5. 设置key过期时间: $redis->expire('key', 60);
  6. 获取key过期时间: $redis->ttl('key');
  7. 自增: $redis->incr('key');
  8. 自减: $redis->decr('key');
  9. 加入列表: $redis->lPush('key', 'value1', 'value2', ...);
  10. 弹出列表中的一个元素: $redis->lPop('key');
  11. 获取列表长度: $redis->lLen('key');
  12. 获取列表中指定范围内的元素: $redis->lRange('key', $start, $end);
  13. 在列表中删除指定元素: $redis->lRem('key', 'value');
  14. 对集合进行添加操作: $redis->sAdd('key', 'value1', 'value2', ...);
  15. 获取集合的元素个数: $redis->sCard('key');
  16. 判断元素是否在集合中: $redis->sIsMember('key', 'value');
  17. 从集合中删除一个元素: $redis->sRem('key', 'value');
  18. 向有序集合中添加元素: $redis->zAdd('key', $score, 'value');
  19. 获取有序集合中元素的数量: $redis->zCard('key');
  20. 获取有序集合中指定范围内的元素: $redis->zRange('key', $start, $end);
  21. 从有序集合中删除指定元素: $redis->zRem('key', 'value');
  22. 获取hash表中所有的键值对: $redis->hGetAll('key');
  23. 设置hash表中某个字段的值: $redis->hSet('key', 'field', 'value');
  24. 获取hash表中某个字段的值: $redis->hGet('key', 'field');
  25. 判断hash表中某个字段是否存在: $redis->hExists('key', 'field');
  26. 删除hash表中某个字段: $redis->hDel('key', 'field');
  27. 发布消息: $redis->publish('channel', 'message');
  28. 订阅消息: $redis->subscribe(array('channel'), function($redis, $channel, $message) {echo $message;});
  29. 监听某个key的变化: $redis->subscribe(array('__keyspace@0__:key'), function($redis, $channel, $message) {echo $channel, ':', $message;});
  30. 设置某个key的值,当值为指定值时才更新: $redis->watch('key'); $redis->multi(); $redis->set('key', 'new_value'); $redis->exec();

总结

以上就是关于本篇文章介绍的内容,MySQL数据库与Redis操作,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。

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

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

相关文章

PsExec流量分析

PsExec远程连接服务器 psexec是sysinternals提供的众多windows工具中的一个&#xff0c;这款工具的初衷是帮助管理员管理大量的机器的&#xff0c;后来被攻击者用来做横向渗透。 下载地址&#xff1a; https://docs.microsoft.com/en-us/sysinternals/downloads/psexec使用Ps…

d2l 里面GRU与Lstm实现

此二者的本质都是对rnn进行改良&#xff1a;关注当前多还是关注之前多。 在此详细讲一下。 目录 1.GRU门循环控制单元 1.1理论&#xff1a; 1.2初始化参数 1.3定义网络 1.4训练命令行 1.5简洁实现 2.Lstm长短期记忆网络 2.1理论 2.2加载参数 2.3定义lstm计算 2.4定义…

iTOP4412开发板Qt程序打包和部署

因为我们要把写好的程序发给用户来用&#xff0c;写好的源码也不方便给别人看&#xff0c;所以要把程序进行打包部署。 步骤一&#xff1a;点击左下角的电脑图标将 Debug 模式切换到 Release 模式。 release 模式&#xff1a;发布版本&#xff0c;不对源代码进行调试&#xff…

微信小程序:表格中更改输入框的值,实时获取表格全部数据,点击按钮更改数据库指定项数据

样例&#xff1a; 样式展示 数据库中原始第一条数据 修改表格第一行的数量&#xff1a; 数据库结果 核心代码 wxml ①wx:for:执行循环将数组数据展示出来 ②在某一单元格加上input样式 ③在input中绑定&#xff1a;文本框改变事件&#xff0c;并且绑定data-index便于知道…

网络编程,IO流

网络编程 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 1.网络通信的要素 通信…

程序环境和预处理(下)——“C”

各位CSDN的uu们你们好呀&#xff0c;今天小雅兰的内容是程序环境和预处理的下篇知识点&#xff0c;那么&#xff0c;这篇博客写完后&#xff0c;C语言的知识点就到这里就结束啦&#xff0c;后续会专注于刷题和读书&#xff0c;也是关于C语言的&#xff0c;会写一些数据结构和C的…

本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录

文章目录前言1. 安装宝塔2. 安装cpolar内网穿透3. 远程访问宝塔4. 固定http地址5. 配置二级子域名6. 测试访问二级子域名转发自CSDN远程穿透的文章&#xff1a;Linux安装宝塔&#xff0c;并实现公网远程登录宝塔面板【内网穿透】 前言 宝塔面板作为建站运维工具&#xff0c;它…

尚融宝17-用户身份认证的三种模式

目录 1、单一服务器模式 2、SSO&#xff08;Single Sign On&#xff09;模式 3、Token模式 1、单一服务器模式 即只有一个服务器&#xff0c;用户通过输入账户和密码&#xff0c;提交表单后服务器拿到前端发送过来的数据查询数据库是否存在该用户&#xff0c;其一般流程如下…

【分享】体验微软Bing在线绘图功能

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 木易巷体验了一下子微软Bing在线绘图功能&#xff0c;快来看看吧~ 简单介绍 New Bing 不了解或者没有注册New Bing的小伙伴可以看看这一篇&#xff1a; 【教程】你现在还不知道微软的New Bing&#xff1f;你out了&#xff0…

【NestJs】使用MySQL关联查询

上一篇文章介绍了NestJs使用MySQL创建多个实体&#xff0c;接下来讲到的则是实体创建完毕之后&#xff0c;开始进行查询。里面可能涉及到nestjs使用语法&#xff0c;要是不知道的小伙伴可以先行了解&#xff0c;也可以模仿写&#xff0c;后面我会继续出nestjs的教程。也欢迎大家…

SpringMVC的基本使用-------基本注解RequestMapping、基本数据类型绑定、参数绑定、POJO类型绑定

SpringMVC的三层架构和MVC SpringMVC简介 三层架构概述&#xff1a; 一种是 C/S 架构&#xff0c;也就是客户端/服务器&#xff0c;另一种是 B/S 架构&#xff0c;也就是浏览器服务器。在 JavaEE 开发中&#xff0c;几乎全都是基于 B/S 架构的开发。那么在 B/S 架构中&#…

时间序列信号阈值降噪方法,有什么可以创新的地方吗?

可以换个空间&#xff0c;从图域的角度进行分析&#xff0c;比如图傅里叶变换&#xff0c;图小波变换等图时频分析方法。图小波阈值降噪的基本思想是通过将时间序列信号转换成路图信号&#xff0c;再利用图小波变换分解成尺度函数系数和一系列对应不同尺度的谱图小波系数&#…

VAE 理论推导及代码实现

VAE 理论推导及代码实现 熵、交叉熵、KL 散度的概念 熵&#xff08;Entropy) 假设 p (x&#xff09;是一个分布函数&#xff0c;满足在 x 上的积分为 1&#xff0c;那么 p(x)p(x)p(x)的熵定义为 H(p(x))H (p (x))H(p(x))&#xff0c;这里我们简写为 H(p)H(p)H(p) H(p)∫p(x)…

移动硬盘文件或目录损坏且无法读取,这样做就对了!

案例&#xff1a;移动硬盘文件或目录损坏且无法读取怎么办 【我的移动硬盘插入电脑后突然就显示文件损坏&#xff0c;遇到这种情况我应该怎么处理呀&#xff1f;感谢回答&#xff01;】 移动硬盘是一种方便携带和存储数据的设备&#xff0c;然而&#xff0c;有时候可能会遇到…

UE中的channel

当我们需要处理碰撞矩阵&#xff0c;或者调用接口投射射线进行检测等&#xff0c;为了区分哪些对象可以被射线检测到&#xff0c;哪些对象忽略&#xff0c;就需要用到channel。 1.Channel 简介 在UE5中&#xff0c;一个对象的channel可以在Physics下查看&#xff1a; 设置成…

如何确保采购过程中的产品质量

在企业采购过程中&#xff0c;确保采购的产品质量是至关重要的。采购的质量直接关系到企业的生产和销售质量&#xff0c;影响企业的形象和利润。为了确保采购过程中的质量&#xff0c;企业需要采取一些措施来保证采购物料和商品的质量&#xff0c;以下是一些有效的方法&#xf…

Linux学习-----Chapter nine

使用 ssh 服务管理远程主机9.1 配置网络服务9.1.1 配置网卡参数9.1.2 创建网络会话9.1.3 绑定两块网卡1、创建一个bond网卡2、向bond0设备添加从属网卡3、配置bond0设备的网络信息4、启动它9.2 远程控制服务9.2.1 配置sshd服务9.2.2 安全密钥验证9.2.3 远程传输命令9.3 不间断会…

日撸 Java 三百行day25-26

文章目录说明day25 二叉树深度遍历的栈实现 (中序)1.具有通用性的对象栈2.栈实现中序遍历2.1 思路2.2 代码day26 二叉树深度遍历的栈实现 (前序和后序)1.前序遍历2.后序遍历说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-…

Redis第二十八讲 Redis集群脑裂数据丢失问题与集群是否完整才能对外提供服务

集群脑裂数据丢失问题 所谓的脑裂,就是指在主从集群中,同时有两个主节点,它们都能接收写请求。而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据。而且,严重的话,脑裂会进一步导致数据丢失。 redis的集群…

银行数字化转型导师坚鹏:银行业同业竞争策略分析

《银行业同业竞争策略分析》 —数字化背景下银行转型发展创新思维 课程背景&#xff1a; 数字化背景下&#xff0c;很多银行存在以下问题&#xff1a; 不清楚国内领先银行的业务发展现状&#xff1f; 不清楚如何制定竞争策略&#xff1f; 不知道其他银行转型的成功做法&…