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

【PHP】MySQL简介与MySQLi函数(含PHP与MySQL交互)

文章目录

  • 一、MySQL简介
  • 二、MySQLi函数
    • 1. 开启mysqli扩展:
    • 2. PHP MySQLi扩展的常用函数
  • 三、PHP与MySQL交互
    • 0. 准备
    • 1. 创建连接(mysqli_connect() )
      • 连接mysql语法
    • 2. 选择数据库(mysqli_select_db())
    • 3. 在php中操作数据库执行语句
      • 1. 读取.sql文件
      • 2. 操作数据库
    • 4. 连接例子:
  • 四、扩展知识
    • mysqli不能使用localhost的解决办法

一、MySQL简介

MySQL是由瑞典MySQL AB公司(先后被Sun和Oracle公司收购)开发的关系型数据库管理系统,支持UNIX,Linux,macOS和Windows等平台上使用。MySQL数据库的默认端口号为3306。

优点:体积小,速度快,使用更加方便快捷,且开源。

特点:

  1. 跨平台性
  2. 可靠性
  3. 适用性
  4. 开源免费

注意:mysql数据库操作时,为了避免用户自定义的数据库名称、字段名称或数据表名称与系统命令冲突,最好使用反引号(`)包裹这些名称。

二、MySQLi函数

PHP作为一门编程语言,本身并不具备操作数据库的功能。所以,若想要在项目开发中完成PHP应用和MySQL数据库之间交互,就需要借助PHP提供的数据库扩展。PHP提供了许多数据库扩展,比较常用的有MySQL扩展、MySQLi扩展和PHP数据对象(PHP Data Objects, PDO)扩展。而PHP MySQLi(PHP MySQL Improved)可以连接MySQL数据库服务器。

注:MySQLi 扩展被设计用于 MySQL 4.1.13 版本或更新的版本。

在使用 MySQLi 函数之前,必须打开 MySQLi 扩展。

1. 开启mysqli扩展:

  1. 检查php的ext文件夹下面看是否有php_mysqli.dll文件

  2. 打开php安装目录下的配置文件:php.ini
    在这里插入图片描述

  3. 找到mysqli扩展

    ;extension=mysqli.dll
    

    在这里插入图片描述

  4. 将分号删掉,并保存
    在这里插入图片描述

  5. 重启apache服务器即可。

2. PHP MySQLi扩展的常用函数

函数描述
mysqli_connect()连接MySQL服务器
mysqli_connect_error()获取连接服务器时的错误信息
mysqli_select_db()选择数据库
mysqli_set_charset()设置客户端字符集
mysqli_query()执行SQL语句,写操作返回true或false,读操作返回结果集对象
mysqli_insert_id()获取上一次插入操作时产生的ID
mysqli_affected_rows()获取上一次操作时受影响的行数
mysqli_errno()返回上一个MySQL操作中的错误信息的错误码
mysqli_error()返回上一个MySQL操作中的错误信息
mysqli_close()关闭数据库连接

三、PHP与MySQL交互

PHP 通过内置函数库 mysqli 进行 MySQL 数据库编程的步骤如下:

  1. 建立与 MySQL 数据服务器的连接(使用 mysqli_connect() 函数);
  2. 选择要进行操作的数据库(使用 mysqli_select_db() 函数);
  3. 执行数据库的操作,如数据的添加删除等(使用 mysqli_query() 函数);
  4. 关闭与 MySQL 数据库服务器进行的连接(使用 mysqli_close() 函数);

0. 准备

前提:apache、mysql、php安装好了,且配置成功。(或者直接使用集成环境WampServer)

开启mysqli扩展:

  1. 检查php的ext文件夹下面看是否有php_mysqli.dll文件

  2. 打开php安装目录下的配置文件:php.ini
    在这里插入图片描述

  3. 找到mysqli扩展

    ;extension=mysqli.dll
    

    在这里插入图片描述

  4. 将分号删掉,并保存
    在这里插入图片描述

  5. 重启apache服务器
    在这里插入图片描述

1. 创建连接(mysqli_connect() )

连接mysql语法

PHP 可以通过 mysqli 接口来连接 MySQL 数据库服务器。mysqli 接口提供了mysqli_connect()函数进行连接。语法格式如下:

$con = mysqli_connect("host_name", "user_name", "password", "mysqldb_name", "port"); // 连接mysql数据库
  • @ 隐藏错误

  • die() 条件显示

  • mysqli_connect_error() 获取连接数据库的错误信息

  • mysqli_connect_errno() 获取连接数据库的错误编码

  • mysqli_set_charset(连接对象,字符编码)

    说明:

    1. host_name:主机名或者主机的 IP 地址,本章中默认的主机名为“localhost:3306”。
    2. user_name:用于登录 MySQL 服务器的用户名,默认值为 root。
    3. pass_word:用户登录口令,默认值为空。
    4. mysqldb_name:数据库名
    5. port:端口号,如果端口号是3306可省略

上述语句通过 mysqli_connect()函数连接 MySQL 数据库服务器并把此连接生成的对象传递给名为$con 的变量。在默认情况下 MySQL 服务器的端口号为 3306,如果采用默认端口号,则可以不指定。如果采用了其他端口号,则要特别指出,如 localhsot:3307。

mysqli_connect( )若成功执行,则返回一个资源句柄型(连接标识号),否者返回逻辑值 FALSE。mysqli_connect( )函数将返回值存放在一个变量中,在其他地方直接引用该变量即可。

2. 选择数据库(mysqli_select_db())

语法格式:

mysqli_select_db(数据库服务器连接对象, "数据库名")

如:

mysqli_select_db($conn, "book")

数据库服务器连接对象或连资源句柄型用于指定相应的与 MySQL 数据库服务器相连的连接标识号,数据库名为指定需要连接的数据库名称。

3. 在php中操作数据库执行语句

1. 读取.sql文件

使用PHP的file_get_contents函数读取要导入的 .sql文件,并将其保存在变量中。

<?php
sql_file = "database.sql"; //.sql文件路径sql_content = file_get_contents($sql_file); //读取.sql文件中的内容
?>

2. 操作数据库

执行语句模板为:

$变量名 = 'mysql执行语句';
mysqli_query($连接名, $变量名);

举例:

$sql = 'create database test';
mysqli_query($conn, $sql);  // 数据库执行上面语句

在这里插入图片描述

4. 连接例子:

例1:

<?php$conn=mysqli_connect("localhost","wrong_user","my_password","my_db");// 检查连接if (!$conn){die("连接错误: " . mysqli_connect_error());}
?>

例2:

<?phpheader("Content-Type: text/html; charset=utf-8"); // 避免中文乱码echo "你好";echo "<br>";$conn = mysqli_connect("localhost:3306", "root", "");var_dump($conn);echo "<br>";if(!mysqli_select_db($conn, "book")){  // 如果连接“book”库失败echo "连接失败<-_->".mysqli_connect_error(); // 显示连接失败信息exit;}else{echo "连接成功"; // 显示连接成功}
?>

浏览器输出结果:

在这里插入图片描述

数据放在mysql安装目录下的data目录下。

四、扩展知识

mysqli不能使用localhost的解决办法

使用mysqli_connect()连接时,当主机填写为localhost时,MySQL会采用 unix domain socket连接,当主机填写为127.0.0.1时MySQL会采用TCP/IP的方式连接。使用Unix socket的连接比TCP/IP的连接更加快速与安全。这是MySQL连接的特性,可以参考MySQL官方文档4.2.4 Connecting to the MySQL Server Using Command Options

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs:the client connects using a Unix socket file.
To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1 (instead of localhost), or the IP address or name of the local server. You can also specify the transport protocol explicitly, even for localhost, by using the --protocol=TCP option.

解决办法:

  1. 将mysqli_connect()里的localhost后面加上端口号,如我用的是3307端口(因为我下载了两个mysql数据库服务器),写成:mysqli_connect(‘localhost:3307’, ‘root’, ‘root’)
    在这里插入图片描述
  2. 使用TCP/IP代替Unix socket。即在连接的时候将localhost换成127.0.0.1。
  3. 修改MySQL的配置文件my.cnf,指定mysql.socket的位置:
/var/lib/mysql/mysql.sock (你的mysql.socket路径)
  1. 直接在php建立连接的时候指定my.socket的位置(官方文档:mysqli_connect)。比如:
$db = new MySQLi('localhost', 'root', 'root', 'my_db', '3306', '/var/run/mysqld/mysqld.sock')

在这里插入图片描述

相关文章:

【PHP】MySQL简介与MySQLi函数(含PHP与MySQL交互)

文章目录 一、MySQL简介二、MySQLi函数1. 开启mysqli扩展&#xff1a;2. PHP MySQLi扩展的常用函数 三、PHP与MySQL交互0. 准备1. 创建连接&#xff08;mysqli_connect() &#xff09;连接mysql语法 2. 选择数据库&#xff08;mysqli_select_db()&#xff09;3. 在php中操作数据…...

vscode在Windows上安装插件提示错误xhr failed

问题描述&#xff1a; 在Windows下&#xff0c;在vscode里搜索扩展时发现无法搜索&#xff0c;报如下错&#xff1a;”Error while fetching extensions. XHR failed“。 问题定位&#xff1a; 在vscode界面下键入ctrlshiftp&#xff0c; 然后输入&#xff1a;Developer: T…...

SHAP(一):具有 Shapley 值的可解释 AI 简介

SHAP&#xff08;一&#xff09;&#xff1a;具有 Shapley 值的可解释 AI 简介 这是用 Shapley 值解释机器学习模型的介绍。 沙普利值是合作博弈论中广泛使用的方法&#xff0c;具有理想的特性。 本教程旨在帮助您深入了解如何计算和解释基于 Shapley 的机器学习模型解释。 我…...

C++数据结构:图

目录 一. 图的基本概念 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三. 图的遍历 3.1 广度优先遍历 3.2 深度优先遍历 四. 最小生成树 4.1 最小生成树获取策略 4.2 Kruskal算法 4.3 Prim算法 五. 最短路径问题 5.1 Dijkstra算法 5.2 Bellman-Ford算法 5.3 Floyd-…...

「C++」红黑树的插入(手撕红黑树系列)

&#x1f4bb;文章目录 &#x1f4c4;前言红黑树概念红黑树的结构红黑树节点的定义红黑树的定义红黑树的调整 红黑树的迭代器迭代器的声明operator( )opeartor--( ) 完整代码 &#x1f4d3;总结 &#x1f4c4;前言 作为一名程序员相信你一定有所听闻红黑树的大名&#xff0c;像…...

2023年生肖在不同时间段的运势预测

随着信息技术的飞速发展&#xff0c;API已经成为了数据获取和交互的重要途径。很多网站和APP都在运用API来获取数据。今天我们来介绍一个十分有趣的API——《十二生肖运势预测API》&#xff0c;通过这个API&#xff0c;我们可以获取到每个生肖在不同时间段的运势预测&#xff0…...

ERRO报错

无法下载nginx 如下解决&#xff1a; 查看是否有epel 源 安装epel源 安装第三方 yum -y install epel-release.noarch NGINX端口被占用 解决&#xff1a; 编译安装的NGINX配置文件在/usr/local/ngin/conf 修改端口...

shiyan

import javax.xml.transform.Result; import java.util.Arrays; public class ParseText {//需要统计的字符串为private String text"Abstract-This paper presents an overview";private Result[] res;private int count;public ParseText(){resnew Result[100];cou…...

深度学习黎明时期的LeNet:揭开卷积神经网络的序幕

在深度学习的历史长河中&#xff0c;Yann LeCun 的 LeNet 是一个里程碑式的研究成果&#xff0c;它为后来的卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;的发展奠定了基础。LeNet 的诞生标志着深度学习黎明时期的到来&#xff0c;为人工…...

跨越威胁的传说:揭秘Web安全的七大恶魔

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…...

【SpringCloud系列】@FeignClient微服务轻舞者

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

【数据库设计和SQL基础语法】--SQL语言概述--SQL的基本结构和语法规则(一)

一、SQL的基本结构 2.1 SQL语句的组成要素 SQL语句的组成要素 关键字&#xff08;Keywords&#xff09;: 定义&#xff1a;SQL语句的基本操作命令&#xff0c;表示要执行的动作。例子&#xff1a;SELECT、INSERT、UPDATE、DELETE等。 标识符&#xff08;Identifiers&#xf…...

使用oxylabs代理国外ip请求openai接口报错记录

报错提示&#xff1a; curl: (35) TCP connection reset by peer curl: (56) Recv failure: Connection reset by peer 这些报错都是因为curl版本过低&#xff08;我的版本是curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2…...

搜索引擎语法

演示自定的Google hacking语法&#xff0c;解释含意以及在渗透过程中的作用 Google hacking site&#xff1a;限制搜索范围为某一网站&#xff0c;例如&#xff1a;site:baidu.com &#xff0c;可以搜索baidu.com 的一些子域名。 inurl&#xff1a;限制关键字出现在网址的某…...

@ResponseBody详解

ResponseBody() 作用&#xff1a; responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0c;写入到response对象的body区&#xff0c;通常用来返回JSON数据或者是XML数据。 位置&#xff1a; ResponseBody是作用在方法上的&…...

一些关于开关电源经典回答

1、开关电源变压器如果用铜带取代漆包线&#xff0c;其允许通过的电流怎么算?比如说厚度为0.1mm的铜带&#xff0c;允许通过的电流怎么算? 专家&#xff1a;如果开关电源变压器用铜带取代漆包线&#xff0c;铜带(漆包线)的涡流损耗可以大大将小&#xff0c;工作频率可以相应…...

Linux-文件夹文件赋权、文件指定修改用户和用户组

Linux-文件夹文件赋权、文件指定修改用户和用户组 文件权限说明文件夹文件赋权chmod命令chmod示例以数字方式修改权限给指定目录赋权给当前目录的所有子文件夹和文件赋权 chown修改属主、属组 文件权限说明 文件或目录的权限位是由9个权限位来控制的&#xff0c;每三位一组&am…...

【Java】7. 类型转换和类型判断

7. 类型转换 7.1 基本类型转换 顺箭头&#xff1a;隐式转换&#xff08;自动&#xff09; 逆箭头&#xff1a;强制转换&#xff08;可能造成精度丢失&#xff09; byte a 10; int b a; int c 1000; byte d (byte) c; System.out.println(d); // -24 7.2 包装类型与基…...

c语言练习12周(15~16)

编写int fun(char s[])函数&#xff0c;返回字串中所有数字累加和 题干编写int fun(char s[])函数&#xff0c;返回字串中所有数字累加和。 若传入串"k2h3yy4x"返回整数9&#xff1b;若传入串"uud9a6f7*"返回整数22 //只填写要求的函数 int fun(cha…...

2023-简单点-机器学习中矩阵向量求导

机器学习中矩阵向量求导的概念是什么&#xff1f; 在机器学习中&#xff0c;矩阵向量求导的概念主要涉及对函数中的矩阵或向量参数进行求导运算。这种求导运算可以帮助我们了解函数值随参数的变化情况&#xff0c;进而应用于优化算法中。具体来说&#xff0c;当损失函数是一个…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...