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

news2024/11/25 10:44:42

文章目录

  • 一、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:

<?php
	header("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')

在这里插入图片描述

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

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

相关文章

算法通关村-----数据流的中位数

数据流的中位数 问题描述 中位数是有序整数列表中的中间值。如果列表的大小是偶数&#xff0c;则没有中间值&#xff0c;中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。 例如 arr [2,3] 的中位数是 (2 3) / 2 2.5 。 实现 MedianFinder 类: MedianFin…

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据

使用 DMA 在 FPGA 中的 HDL 和嵌入式 C 之间传输数据 该项目介绍了如何在 PL 中的 HDL 与 FPGA 中的处理器上运行的嵌入式 C 之间传输数据的基本结构。 介绍 鉴于机器学习和人工智能等应用的 FPGA 设计中硬件加速的兴起&#xff0c;现在是剥开几层“云雾”并讨论 HDL 之间来回传…

高校学生宿舍公寓报修维修生活管理系统 微信小程序b2529

本课题要求实现一套基于微信小程序宿舍生活管理系统&#xff0c;系统主要包括&#xff08;管理员&#xff0c;学生、维修员和卫检员&#xff09;四个模块等功能。 使用基于微信小程序宿舍生活管理系统相对传统宿舍生活管理系统信息管理方式具备很多优点&#xff1a;首先可以大幅…

ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO

ESP32-Web-Server 实战编程-通过网页控制设备多个 GPIO 概述 上节 ESP32-Web-Server 实战编程-通过网页控制设备的 GPIO 讲述了如何通过网页控制一个 GPIO。本节实现在网页上控制多个 GPIO。 示例解析 前端设计 前端代码建立了四个 GPIO&#xff0c;如下死 GPIO 2 在前端的…

【Java Spring】Spring MVC基础

文章目录 1、Spring MVC 简介2、Spring MVC 功能1.1 Spring MVC 连接功能2.2 Spring MVC 获取参数2.2.1 获取变量2.2.2 获取对象2.2.3 RequestParam重命名后端参数2.2.4 RequestBody 接收Json对象2.2.5 PathVariable从URL中获取参数 1、Spring MVC 简介 Spring Web MVC是构建于…

【计算机网络笔记】以太网

系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能&#xff08;1&#xff09;——速率、带宽、延迟 计算机网络性能&#xff08;2&#xff09;…

鸿蒙开发学习——应用程序框架

文章目录 UIAbility的生命周期Create状态WindowStageCreateForeground和Background前后台展示控制onWindowStageDestroyDestory 总结 UIAbility的生命周期 感觉这里他讲的不清晰&#xff0c;UIAbility的4个声明周期是Create、Foreground&#xff08;桌面展示&#xff09;、Back…

C#-认识串口通信并使用串口助手

串口通讯(Serial Communication)&#xff0c;是指外设和计算机间&#xff0c;通过数据信号线、地线等&#xff0c;按位进行传输数据的一种双向通讯方式。 串口是一种接口标准&#xff0c;它规定了接口的电气标准&#xff0c;没有规定接口插件电缆以及使用的通信协议&#xff0…

ModbusRTU\TCP消息帧解析(C#实现报文发送与解析)

目录 知识点常用链接一、Modbus1.ModbusRTU消息帧解析2.主站poll、从站slave通讯仿真-modbusRTU1.功能码01读线圈状态2.功能码03读保持寄存器报文解析&#xff08;寄存器存整型&#xff09;报文解析&#xff08;寄存器存float&#xff09; 3.C#模拟主站Poll&#xff08;ModbusR…

P24 C++ 字符串常量

前言 本期我们讨论字符串字面量。 这是一种基于字符串的东西&#xff0c;上一章我们讲过字符串&#xff0c;你一定要去先去看看那一期的内容。 P23 C字符串-CSDN博客 01 什么是字符串字常量呢&#xff1f; 字符串字面量就是在双引号之间的一串字符 在上面的代码中&#xf…

Linux CentOS_7解决无法上网的问题

参考视频&#xff1a;保姆式教学虚拟机联网liunx(centos)_哔哩哔哩_bilibili 配置网络&#xff1a;解决上网问题 第一步&#xff1a;选择网络模式 第二步&#xff1a;配置网卡命令&#xff1a;打开终端执行命令&#xff1a; 1、先切换到根目录下&#xff0c;防止在第执行cd …

计网Lesson4 - 计算机组网模型

文章目录 计算机的连接方式1. 两台计算机的互联2. 多台计算机的互联&#xff08;旧式&#xff09;3. 多台计算机的互联 --- 集线器&#xff08;Hub&#xff09;4. 网桥5. 多台计算机的互联 --- 交换器&#xff08;Switch&#xff09; 计算机的连接方式 1. 两台计算机的互联 网…

什么是路由抖动?该如何控制

路由器在实现不间断的网络通信和连接方面发挥着重要作用&#xff0c;具有所需功能的持续可用的路由器可确保其相关子网的良好性能&#xff0c;由于网络严重依赖路由器的性能&#xff0c;因此确保您的路由器不会遇到任何问题非常重要。路由器遇到的一个严重的网络问题是路由抖动…

如何使用APP UI自动化测试提高测试效率与质量?

pythonappium自动化测试系列就要告一段落了&#xff0c;本篇博客咱们做个小结。 首先想要说明一下&#xff0c;APP自动化测试可能很多公司不用&#xff0c;但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的&#xff0c;所以为了更好的待遇&#xff0c;我们还…

第15关 K8s HPA:自动水平伸缩Pod,实现弹性扩展和资源优化

------> 课程视频同步分享在今日头条和B站 大家好&#xff0c;我是博哥爱运维&#xff0c;这节课带来k8s的HPA 自动水平伸缩pod&#xff08; 视频后面有彩蛋 : ) &#xff09;。 我们知道&#xff0c;初始Pod的数量是可以设置的&#xff0c;同时业务也分流量高峰和低峰&a…

Java 8 中 ReentrantLock 与 Synchronized 的区别

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

【安装指南】MySQL和Navicat下载、安装及使用详细教程

目录 ⛳️1.【MySQL】安装教程 1.1 获取下载包 1.2 MySQL安装 1.2.1 MySQL工具安装 1.2.2 MySQL环境变量 1.2.3 验证MySQL安装成功 ⛳️2.【Navicat-v15】的安装和无限使用 ⛳️3.【测试Navicat连接MySQL】 ⛳️1.【MySQL】安装教程 1.1 获取下载包 前往官网获取压缩包…

C#Backgroundworker与Thread的区别

前言 当谈到多线程编程时&#xff0c;C#中的BackgroundWorker和Thread是两个常见的选择。它们都可以用于实现并行处理和异步操作&#xff0c;但在某些方面有一些重要的区别。本文将详细解释BackgroundWorker和Thread之间的区别以及它们在不同场景中的使用。 目录 前言1. Backgr…

蓝桥杯每日一题2023.11.28

题目描述 三羊献瑞 - 蓝桥云课 (lanqiao.cn) 题目分析 本题首先进行观察可以确定 1.“三”为 1 &#xff08;十进制数字要进位进一位&#xff09; 2.“祥”一定不为 0 &#xff08;有前导0就不能算为 4 位数&#xff09; 使用搜索时将其特判 #include<bits/stdc.h> …

商用车的智慧眼车规级激光雷达

1、商用车自动驾驶技术&#xff1a;巨大的降本增效空间 2、感知是第一步&#xff1a;看懂环境路况才能安全的自动驾驶 3、多传感器融合&#xff0c;感知信息冗余&#xff0c;保障自动驾驶安全 4、商用车需要什么样的激光雷达 5、车规级激光雷达的软硬件成熟度及延展性 &#x…