当前位置: 首页 > news >正文

【深度学习】PHP操作mysql数据库总结

一.PHP数据库的扩展分类


1.MySQL 扩展是针对 MySQL 4.1.3 或更早版本设计的,是 PHP 与 MySQL数据库交互的早期扩展。由于其不支持 MySQL 数据库服务器的新特性,且安全性差,在项目开发中不建议使用,可用 MySQLi 扩展代替

2.MySQLi 扩展是 MySQL 扩展的增强版,它不仅包含了所有 MySQL 扩展的功能函数,还可以使用 MySQL 新版本中的高级特性。例如,多语句执行和事务的支持,预处理方式完全解决了 SQL 注入问题等。MySQLi 扩展只支持MySQL 数据库,如果不考虑其他数据库,该扩展是一个非常好的选择。

3.PDO 是 PHP Data Objects(数据对象)的简称,它提供了一个统一的 API接口,只要修改其中的 DSN (数据源),就可以实现PHP应用与不同类型数据库服务器之间的交互。
 

二.连接数据库。

1.通过MySQL类库操作数据库的步骤

建立到MySQL的连接-打开指定的数据库-设置默认客户端的字符集-执行SQL查询-释放字符集-关闭连接

三.执行SQL语句。

       在完成数据库的连接后,就可以通过 SQL 语句操作数据库了。在 MySQLi扩展中,通常使用 mysqli_query() 函数发送 SQL 语句,获取执行结果。函数的声明方式如下:

 $conn表示通过 mysqli_connect() 函数获取的数据库连接, $sql 表示 SQL 语句。当函数执行 SELECT、SHOW、DESCRIBE 或EXPLAIN 查询时,返回值是查询结果集,而对于其他查询,成功返回 true,失败返回 false。

使用 mysql_query()函数执行 SQL语句,对数据的操作方式主要包括 5种方式
    查询数据:使用select 语句实现数据的查询功能。
    显示数据:使用select 语句显示数据的查询结果。
    插入数据:使用insert into 语句向数据库中插入数据。
    更新数据:使用update 语句更新数据库中的记录。
    删除数据:使用 delete语句删除数据库中的记录!

四.处理结果集


1.当通过 mysqli_query() 函数执行 SQL 语句后,返回的结果集并不能直接使用,需要使用函数从结果集中获取信息,保存为数组。MySQLi 扩展中常用的处理结果集的函数如表所示。

2.在表列举函数中,mysqli_fetch_all() 和 mysqli_fetch_array() 的返回值支持关联数组和索引数组两种形式,函数第 1 个参数表示结果集,第 2 个参数是可选参数,表示返回的数组形式,其值有 MYSQLI_ASSOC、MYSQLI_NUM、MYSQLI_BOTH 三种常量,分别表示关联数组、索引数组,或两者皆有,默认值为 MYSQLI_BOTH
 

3.当需要一次查询出所有的记录时,可以通过 mysqli_fetch_all() 函数来实现

$data = mysqli_fetch_all($result, MYSQLI_ASSOC);

再通过var_dump($data);打印出来。

五.预处理语句。

1.什么是预处理。

MySQLi  扩展中有一种预处理语句的机制,其原理是预先编译 SQL 语句的模板,当执行时只传输有变化的数据。下图演示了预处理语句和传统方式的区别。

图中可以看出,当 PHP 需要执行 SQL 时,传统方式是将发送的数据和 SQL 写在一起,这种方式每条 SQL 都需要经过分析、编译和优化的周期;而预处理语句只需要编译一次用户提交的 SQL 模板,在操作时,发送相关数据即可完成更新操作,这极大地提高了运行效率,而且无需考虑数据中包含特殊字符(如单引号)导致的语法问题。
 

2.预处理相关函数。

a.  mysqi_prepare()函数用于预处理一个待执行的 SQL 语句,函数声明如下:mysqli_stmt mysqli_prepare ( mysqli $link , string $query )参数 $link 表示数据库连接,$query 表示 SQL 语句模板。当函数执行后,成功返回预处理对象,失败返回 false。

b.  在编写SQL语句模板时,其语法是将数据部分使用“?”占位符代替。示例代码如下:
 

PHP操作mysql数据库总结

一.开启Mysql数据库
1)php可以通过MySql函数库来操作数据库
开启mysql扩展
编辑Php配置文件php.ini
extension_dir="php/ext文件路径"
启动extension=mysqli选项 在php.ini文件内;二.PHP操作Mysql数据库的步骤:
1.连接mysql数据库服务器
2.判断是否连接正确
3.选择数据库
4.设置字符集编码
5.准备并执行SQL语句
6.处理结果集
7.释放结果集资源,关闭数据库三.具体操作mysql数据库
先要写头部header()汉字编码
如果数据库中有时间输出的话还要写时区类型
1.连接数据库
$conn=mysqli_connect(连接数据库的ip:3306,mysql数据库的账号,mysql数据库的密码)
2.判断是否连接成功
返回错误号
int mysql_errno([$link]); 中括号中的内容可以省略
如果为发生任何错误,此函数会返回0
返回错误信息
string mysqli_connect_error();
排查mysql数据库的错误信息可以用or die(...错误号.mysql_errno(),错误信息.mysqli_connect_error())来进行连接;
3.选择数据库
bool mysql_select_db('数据库的名字',[$link])
4.设置客户端汉字编码
bool mysql_set_charset('utf8',[$link])
5.执行SQL语句
mixed mysql_query(select(查看表内容)\show(tables查看数据库\
create tabel查看建表)\desc(查看表结构)\insert(添加记录)\
update(更新)\dalete(删除))四.处理资源结果集
1.获取结果集包含的记录数目
int mysql_num_rows($表里记录信息变量)
2.获取表里的内容以索引数组返回值
array mysql_fetch_row($表里的记录信息变量)
3.获取表里的内容以关联数组返回值
array mysql_fetch_assoc($表里的记录信息变量)
4.获取结果集中字段的数目
int mysql_num_fieds($result)
5.返回结果集中某行记录的某个字段值(默认为首字段)
mysql_result($result, int $row)
int值是从0开始的0 拿某个字段的值
$row写字段名五.处理非查询语句
1.获取插入时受影响行的行数
int mysql_affected_rows()
2.获取插入时最后插入记录的主键id
int mysql_insert_id()六.释放结果集资源
1.如果是执行的事查询SQL语句查询后必须要释放资源
bool mysql_free_result();
2.使用完数据库后要关闭数据库
bool mysql_close();

<?php
$username=$_POST['usernm']; $password=$_POST['passwd']; #接收来自login.php传递的passwd值赋值到$password上
$conn=mysqli_connect("localhost","root","root","login"); #建立与数据库的连接
if (!$conn)
{
die("连接错误:". mysqli_connect_error());
} #判断和数据库是否连接正确
$sql="select * from laptop where user='$username' and password='$password'"; 
$res=mysqli_query($conn,$sql); #连接,执行sql语句
if (mysqli_fetch_array($res)!=0) #将传参转化为数组,判断用户输入的值是否和数据库指定的字段中的值是否相同,相同即不为0,不相同反之。
{
echo "OK"; #可以改成页面链接 如:"header("location:query.html");"
}
else
{
echo "NO";
}?>

PHP操作数据库

(1) 连接数据库


<?php$servername = "localhost";
$username = "root";
$password = "123456";
$dbname = 'dbali';$conn = new mysqli($servername, $username, $password, $dbname); // 创建连接// 检测连接
if ($conn->connect_error) 
{die("连接失败: " . $conn->connect_error);
} $conn->set_charset('utf8');	//查询前设置编码,防止输出乱码echo "连接成功";
?>

PHP连接数据库MYSQL的八个步骤

1.链接MySQL数据库 mysqli_connect();
2.判断链接是否成功
3.设置字符集 mysqli_set_charset
4.选择数据库 mysqli_select_db

5.准备SQL语句 select update insert delete
6.执行SQL语句
在选择数据库中使用 mysql_query()函数执行 SQL语句,对数据的操作方式主要包括 5种方式
    查询数据:使用select 语句实现数据的查询功能。
    显示数据:使用select 语句显示数据的查询结果。
    插入数据:使用insert into 语句向数据库中插入数据。
    更新数据:使用update 语句更新数据库中的记录。
    删除数据:使用 delete语句删除数据库中的记录!
7.处理结果集
8.关闭数据库释放资源

<?php$conn = mysqli_connect('localhost','root','root');if (!$conn) {die("连接失败: " . $conn->connect_error);   //exit('数据库连接失败');}mysqli_set_charset($conn,'utf8');mysqli_select_db($conn,'count');$sql = "select * from count";$obj = mysqli_query($conn,$sql);$res = mysqli_fetch_array($obj);var_dump($res);mysqli_close($conn);?> 

(2) 书写语句,执行语句
   ① 执行语句的代码:$res = $conn->query()
   ② 若执行的是增删改语句,$res的值为布尔值(insert, update, delete)
   ③ 若执行的是查询语句,得到查询结果集(对象)(select)

   ④ 若是查询语句,记得释放查询结果集,避免资源浪费
   ⑤ 关闭数据库

相关文章:

【深度学习】PHP操作mysql数据库总结

一.PHP数据库的扩展分类 1.MySQL 扩展是针对 MySQL 4.1.3 或更早版本设计的&#xff0c;是 PHP 与 MySQL数据库交互的早期扩展。由于其不支持 MySQL 数据库服务器的新特性&#xff0c;且安全性差&#xff0c;在项目开发中不建议使用&#xff0c;可用 MySQLi 扩展代替。 2.MySQ…...

【送书活动】探究AIGC、AGI、GPT和人工智能大模型

文章目录 前言01 《ChatGPT 驱动软件开发》推荐语 02 《ChatGPT原理与实战》推荐语 03 《神经网络与深度学习》推荐语 04 《AIGC重塑教育》推荐语 05 《通用人工智能》推荐语 后记赠书活动 前言 人工智能技术在过去几年中发展迅猛&#xff0c;得益于大数据、云计算、深度学习等…...

Apple Find My「查找」认证芯片找哪家,认准伦茨科技ST17H6x芯片

深圳市伦茨科技有限公司&#xff08;以下简称“伦茨科技”&#xff09;发布ST17H6x Soc平台。成为继Nordic之后全球第二家取得Apple Find My「查找」认证的芯片厂家&#xff0c;该平台提供可通过Apple Find My认证的Apple查找&#xff08;Find My&#xff09;功能集成解决方案。…...

java.lang.IllegalArgumentException: Could not resolve placeholder XXX‘ in value

问题描述 使用Springcloudalibaba的nacos作为配置中心&#xff0c;服务启动时报错&#xff1a; java.lang.IllegalArgumentException: Could not resolve placeholder XXX‘ in value java.lang.IllegalArgumentException: Param ‘serviceName’ is illegal, serviceName is …...

自动机器学习是什么?概念及应用

自动机器学习 (Auto Machine Learning) 的应用和方法 随着众多企业在大量场景中开始采用机器学习&#xff0c;前后期处理和优化的数据量及规模指数级增长。企业很难雇用充足的人手来完成与高级机器学习模型相关的所有工作&#xff0c;因此机器学习自动化工具是未来人工智能 (A…...

el-date-picker限制选择7天内禁止内框选择

需求&#xff1a;elementPlus时间段选择框需要满足&#xff1a;①最多选7天时间。②不能手动输入。 <el-date-picker v-model"timeArrange" focus"timeEditable" :editable"false" type"datetimerange" range-separator"至&qu…...

Navicat 技术指引 | 适用于 GaussDB 分布式的调试器

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…...

人工智能导论习题集(3)

第五章&#xff1a;不确定性推理 题1题2题3题4题5题6题7题8 题1 题2 题3 题4 题5 题6 题7 题8...

2023一起益企广东省中小企业数字化赋能活动(深圳站)成功举办

12月12日&#xff0c;由广东工业和信息化厅指导&#xff0c;广东省中小企业服务中心、深圳市中小企业服务局主办&#xff0c;深圳联通承办的2023年“一起益企”广东省中小企业数字化赋能专项对接志愿服务活动&#xff08;深圳站&#xff09;在深圳成功举办。 本次活动涵盖中小企…...

MySQL之创建表

创建emp表 #创建表的练习 -- 字段 属性 -- Id 整形 -- name 字符型 -- sex 字符型 -- birthday 日期型 -- entry_date 日期型 -- job 字符型 -- Salary 小数型 -- resume 文本型 CREATE TABLE emp(id INT,name VARCHAR(32),sex CHAR(1),birthday DATE,entry_date DAT…...

选择大于努力-鸿蒙开发应用不适合当前企业的现状态(头部应用除外)推荐一套款平台框架可以写安卓iOS 鸿蒙为企业开源节流

1。从目前各种app平台以及个人原生安卓开发走来的经验看来&#xff0c;原生app开发存在一下问题也是国内现状的情况 1.开发成本高比如原生安卓你需要掌握一种语言Java或者kotlin ios开发需要oc 或者swift 2.app开发出来推广成本&#xff0c;一般企业吃不消 3.开发维护成本好…...

2023.12.12 关于 Java 反射详解

目录 基本概念 定义 用途 反射相关的类 反射基本原理 Class 类中的相关方法 常用获得类相关的方法 常用获得类中属性相关的方法 常用获得类中构造器相关的方法 常用获得类中方法相关的方法 实例理解 反射优缺点 基本概念 定义 Java 的反射&#xff08;reflection&a…...

【Qt QML入门】Image

Image类型显示一个图像。 使用source属性将图像的源指定为URL。图像可以以Qt支持的任何标准图像格式提供&#xff0c;包括位图格式&#xff0c;如PNG和JPEG&#xff0c;以及矢量图形格式&#xff0c;如SVG。 如果没有指定宽度和高度属性&#xff0c;图像将自动使用加载图像的大…...

Spark编程入门

1.8 Spark编程入门 1.8.1 通过IDEA创建Spark工程 ps:工程创建之前步骤省略,在scala中已经讲解,直接默认是创建好工程的 导入Pom文件依赖 <!-- 声明公有的属性 --><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler…...

JVM 内存分析工具 Memory Analyzer Tool(MAT)的深度讲解

目录 一. 前言 二. MAT 使用场景及主要解决问题 三. MAT 基础概念 3.1. Heap Dump 3.2. Shallow Heap 3.3. Retained Set 3.4. Retained Heap 3.5. Dominator Tree 3.6. OQL 3.7. references 四. MAT 功能概述 4.1. 内存分布 4.2. 对象间依赖 4.3. 对象状态 4.4…...

浅谈 USB Bulk 深入浅出 (3) - USB Bulk 装置传输的注意事项

来源&#xff1a;大大通 作者&#xff1a;冷氣團 1 USB Bulk 是什么 USB 是即插即用使用差动信号的装置界面&#xff0c;是以 端点 ( Endpoint )&#xff0c;做为传输装置的输出入端&#xff0c;透过不同的端点 ( Endpoint ) 和模式&#xff0c;来进行与装置的沟通&#xff…...

c语言结构体调用格式与对齐

1.声明形式&#xff1a; struct 结构体名字 { 结构体成员 }结构体变量名&#xff1b; 2.赋值方法 3.结构体对齐&#xff1a; 1.起始偏移量&#xff1a;默认结构体第一个元素对齐0起始偏移量&#xff0c;第一个元素占一个字节&#xff0c;此时偏移量为1. 2.标准数&#xff…...

服务器常用命令介绍和负载监控的工具插件推荐

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 码字不易&#xff0c;如果喜欢可以关注我哦&#xff01; 如果本篇文章对你有所启发&#xff0c;欢迎访问我的个人博客 命令 服务器相关 5个常用命令 top Top命令不仅显示了当前内核服务的…...

linux 防火墙systemctl (个人笔记)

查看 systemctl status firewalld 开启 systemctl start firewalld 关闭 systemctl stop firewalld.service 查看所有 firewall-cmd --zonepublic --list-ports 开放端口&#xff1a;// --permanent 永久生效,没有此参数重启后失效 firewall-cmd --zonepublic --add-port9527/…...

处理器中store指令的处理

对于向存储器中保存数据的store指令来说,它在顺利离开流水线之前是不允许改变处理器状态的&#xff0c;只有等到它退休(retire)的时候&#xff0c;才允许将它携带的数据写到D-Cache中在此之前&#xff0c;store指令即使计算完毕&#xff0c;也会将结果暂存在一个缓存中&#xf…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

TCP/IP 网络编程 | 服务端 客户端的封装

设计模式 文章目录 设计模式一、socket.h 接口&#xff08;interface&#xff09;二、socket.cpp 实现&#xff08;implementation&#xff09;三、server.cpp 使用封装&#xff08;main 函数&#xff09;四、client.cpp 使用封装&#xff08;main 函数&#xff09;五、退出方法…...

Python 高级应用10:在python 大型项目中 FastAPI 和 Django 的相互配合

无论是python&#xff0c;或者java 的大型项目中&#xff0c;都会涉及到 自身平台微服务之间的相互调用&#xff0c;以及和第三发平台的 接口对接&#xff0c;那在python 中是怎么实现的呢&#xff1f; 在 Python Web 开发中&#xff0c;FastAPI 和 Django 是两个重要但定位不…...

RKNN开发环境搭建2-RKNN Model Zoo 环境搭建

目录 1.简介2.环境搭建2.1 启动 docker 环境2.2 安装依赖工具2.3 下载 RKNN Model Zoo2.4 RKNN模型转化2.5编译C++1.简介 RKNN Model Zoo基于 RKNPU SDK 工具链开发, 提供了目前主流算法的部署例程. 例程包含导出RKNN模型, 使用 Python API, CAPI 推理 RKNN 模型的流程.   本…...

C#中用于控制自定义特性(Attribute)

我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中&#xff0c;Attribute&#xff08;特性&#xff09;是一种用于向程序元素&#xff08;如类、方法、属性等&#xff09;添加元数据的机制。Attr…...