PHP语法学习(第九天)—PHP连接mysql详解(下)

首先,温馨提示,该部分内容跟昨天“PHP语法学习(第八天)—PHP连接mysql详解(上)”一起食用更佳噢!!
学习本篇内容必须掌握数据库基础命令点击“MYSQL 数据库”~~
本文是接着PHP连接mysql的知识点接着讲,今天主要讲述PHP连接mysql之后对数据库的内容进行操作✔️✔️✔️
另外,想学习更多PHP语法相关内容请点击“PHP专栏”~~
废话少说,进入正题~~~

在这里插入图片描述

文章目录

  • PHP 创建 MySQL 表
    • MYSQL 表的数值限制
    • MySQLi - 面向对象
    • MySQLi - 面向过程
    • PDO方式创建表
  • PHP MySQL 插入数据
    • 插入数据要注意
    • MySQLi 向 MySQL 插入数据
      • 面向对象
      • 面向过程
    • PDO向 MySQL 插入数据
  • PHP MySQL 插入多条数据
    • 面向对象
    • 面向过程
    • PDO插入多条数据
  • 预处理语句插入数据
    • 利用`mysqli` 扩展运行预处理语句
    • 实例
  • PHP MySQL 查询表内数据
    • 实例:
  • PHP MySQL Where 子句
    • 实例:
  • PHP MySQL的 数据更新
    • 实例
  • PHP MySQL 的数据删除
    • 实例

PHP 创建 MySQL 表

  • 建立MYSQL 数据表,同样有两种方式:MySQLiPDO
  • 建表之前,需要用 use myDB 来选择要操作的数据库
  • 建立 MySQL 表:CREATE TABLE 语句

MYSQL 表的数值限制

  • NOT NULL 每一行都必须含有值(不能为空) , null 值是不可取的
  • DEFAULT value 设置默认值
  • UNSIGNED 使用无符号数值类型,0 及正数
  • AUTO INCREMENT 设置 MySQL 字段的值在新增记录时每次自动增长 1
  • PRIMARY KEY 主键,设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT(自增约束) 一起使用。
  • 并且,每个表都应该有一个主键(名称为 “id” 列),主键必须包含唯一的值

MySQLi - 面向对象

实例:

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 

// 使用 sql 创建数据表
$sql = "CREATE TABLE LXJtable(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
 
if ($conn->query($sql) === TRUE) {
    echo "数据表 LXJtable 创建成功";
} else {
    echo "创建数据表错误: " . $conn->error;
}
 
$conn->close();
?>

MySQLi - 面向过程

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

// 使用 sql 创建数据表
$sql = "CREATE TABLE LXJtable(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
 
if (mysqli_query($conn, $sql)) {
    echo "数据表 LXJtable 创建成功";
} else {
    echo "创建数据表错误: " . mysqli_error($conn);
}
 mysqli_close($conn);
?>

PDO方式创建表

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
 
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
    // 使用 sql 创建数据表
    $sql = "CREATE TABLE LXJtable(
		id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
		firstname VARCHAR(30) NOT NULL,
		lastname VARCHAR(30) NOT NULL,
		email VARCHAR(50),
		reg_date TIMESTAMP
    	)";
 
    // 使用 exec() ,没有结果返回 
    $conn->exec($sql);
    echo "数据表 LXJtable 创建成功";
}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
} 
$conn = null;
?>

PHP MySQL 插入数据

  • 同样,利用MySQLi 或者 PDOMySQL 插入数据
  • INSERT INTO 语句常用于向 MySQL 表添加新的记录:
INSERT INTO table_name(字段名1,字段名2,...) VALUES (value1, value2, value3,...)

插入数据要注意

  1. PHP 中 SQL 查询语句必须使用引号
  2. SQL 查询语句中的字符串值必须加引号
  3. 数值的值不需要引号
  4. NULL 值不需要引号

MySQLi 向 MySQL 插入数据

面向对象

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
//myql插入数据  
$sql = "INSERT INTO LXJtable(firstname, lastname, email)  VALUES ('新之助', '野原', 'lbxx@example.com')";
 
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
 
$conn->close();
?>

面向过程

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检测连接
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('新之助', '野原', 'lbxx@example.com')"; 
if (mysqli_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

PDO向 MySQL 插入数据

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
 try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // 设置 PDO 错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('新之助', '野原', 'lbxx@example.com')";
    // 使用 exec() ,没有结果返回 
    $conn->exec($sql);
    echo "新记录插入成功";
}

catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}
 $conn = null;
?>

PHP MySQL 插入多条数据

  • 通常,mysqli_multi_query() 函数可用来执行多条SQL语句

面向对象

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建链接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查链接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 

$sql = "INSERT INTO LXJtable(firstname, lastname, email)  VALUES ('新之助', '野原', 'lbxx@example.com')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', 'DZQ@example.com')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', 'cyx@example.com')";
if ($conn->multi_query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
 $conn->close();
?>

面向过程

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建链接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// 检查链接
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

$sql = "INSERT INTO LXJtable(firstname, lastname, email)  VALUES ('新之助', '野原', 'lbxx@example.com')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', 'DZQ@example.com')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', 'cyx@example.com')";
if (mysqli_multi_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

PDO插入多条数据

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
 
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 开始事务
    $conn->beginTransaction();
   
    // SQL 语句 
	$conn->exec("INSERT INTO LXJtable(firstname, lastname, email)  VALUES ('新之助', '野原', 'lbxx@example.com')");
  $conn->exec("INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', 'DZQ@example.com')");
  $conn->exec("INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', 'cyx@example.com')");
    // 提交数据
  $conn->commit();
  echo "新记录插入成功";
}
catch(PDOException $e)
{
    // 如果执行失败回滚
    $conn->rollback();
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

预处理语句插入数据

利用mysqli 扩展运行预处理语句

mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
  • 该函数绑定参数查询并将参数传递给数据库
  • 第二个参数是 “sss” , 通过 s 字符告诉 mysql 参数是字符串
  • 可以用四种参数: i - 整数,d - 双精度浮点数,s - 字符串,b - 布尔值
  • 同时,每个参数必须指定类型,通过类型的判断可以减少SQL注入漏洞带来的风险。

实例

 <?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
/ 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} else {
    $sql = "INSERT INTO MyGuests(firstname, lastname, email)  VALUES(?, ?, ?)";
     // 为 mysqli_stmt_prepare() 初始化 statement 对象
    $stmt = mysqli_stmt_init($conn);
     //预处理语句
    if (mysqli_stmt_prepare($stmt, $sql)) {
        // 绑定参数
        mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email);
         // 设置参数并执行
        $firstname = '新之助';
        $lastname = '野原';
        $email = 'XX@example.com';
        mysqli_stmt_execute($stmt);
        $firstname = '广志';
        $lastname = '野原';
        $email = 'GZ@example.com';
        mysqli_stmt_execute($stmt);
        $firstname = '美伢';
        $lastname = '野原';
        $email = 'MY@example.com';
        mysqli_stmt_execute($stmt);
    }
}
?>

PHP MySQL 查询表内数据

从数据表中查询数据: SELECT 语句

SELECT column_name(s) FROM table_name

实例:

  • 面向对象
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
//mysql语句
$sql = "SELECT id, firstname, lastname FROM LXJtable";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 结果";
}
$conn->close();
?>

利用函数 num_rows() 判断返回的数据
如果返回的是多条数据,函数 fetch_assoc() 将结合相关的数据放入到关联数组并循环输出
while() 循环出运行结果,并输出 id, firstnamelastname 三个字段值。

  • 面向过程
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
//sql语句查询 
$sql = "SELECT id, firstname, lastname FROM LXJtable";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 结果";
}
 
mysqli_close($conn);
?>

PHP MySQL Where 子句

  • where 子句用于查询满足指定条件的数据
  • mysql中的语法:
SELECT column_name(s) FROM table_name  WHERE column_name operator value

实例:

<?php
$con=mysqli_connect("localhost","username","password","database");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM LXJtable WHERE firstname='新之助'");

while($row = mysqli_fetch_array($result))
{
    echo $row['firstName'] . " " . $row['lastName'];
    echo "<br>";
}
?>

PHP MySQL的 数据更新

  • MySQL中,UPDATE语句用于修改表中已存在的记录
UPDATE table_name  SET column1 = value1, column2 = value2, ... 
WHERE condition;

实例

<?php
$con=mysqli_connect("localhost","username","password","database");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

mysqli_query($con,"UPDATE Persons SET Age=36 WHERE firstName='XJ' AND lastName='Lian'");

mysqli_close($con);
?>

PHP MySQL 的数据删除

  • DELETE语句用于从数据库表中删除现有的记录
DELETE FROM table_name WHERE condition;

实例

<?php
$con=mysqli_connect("localhost","username","password","database");
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

mysqli_query($con,"DELETE FROM LXJtable WHERE LastName='野原' ");

mysqli_close($con);
?>

PHP连接mysql的相关知识到这里就结束了,明天见啦!
😆想要了解更多请点击练小杰的CSDN!!!!
ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

qt基本部分控件用法(一)

前言: 以前 windows下做工具主要是MFC&#xff0c;趁有点空时间&#xff0c;研究了QT&#xff0c;感觉跟MFC 差不多&#xff0c;VS 比 QT CREATOR 还是强大&#xff0c;不过QT可以跨平台&#xff0c;功能更强大&#xff0c;MFC 只能在win平台下.&#xff1b; 1&#xff1a;环境…

Mysql索引,聚簇索引,非聚簇索引,回表查询

什么是索引 数据库索引是为了实现高效数据查询的一种有序的数据数据结构&#xff0c;类似于书的目录&#xff0c;通过目录可以快速的定位到想要的数据&#xff0c;因为一张表中的数据会有很多&#xff0c;如果直接去表中检索数据效率会很低&#xff0c;所以需要为表中的数据建立…

以MP6924A为核心的LLC拓扑学习【一】

PFCLLC: 在PFC&#xff08;功率因数校正&#xff09;和LLC&#xff08;谐振变换器&#xff09;组成的电源系统中&#xff0c;各个电路有特定的作用&#xff0c;它们协同工作以实现高效率和高功率因数的电能转换。 1. PFC&#xff08;功率因数校正&#xff09;电路的作用 PFC电…

️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南20241206

&#x1f6e0;️ 在 Windows WSL 上部署 Ollama 和大语言模型的完整指南 &#x1f4dd; 引言 随着大语言模型&#xff08;LLM&#xff09;和人工智能的飞速发展&#xff0c;越来越多的开发者尝试在本地环境中部署大模型进行实验。然而&#xff0c;由于资源需求高、网络限制多…

1-1 ESP32开发环境配置

前言&#xff1a; 基于Arduio配置ESP32开发环境... 目录 前言&#xff1a; 1.0 安装Python 2.0 安装VSCode 3.0 VSCode实用插件 4.0 替换VSCode配置&#xff08;可选&#xff09; 后记 1.0 安装Python 在windows操作系统的搜索框中搜索Microsoft Store 点击获取 安装完成…

【k8s 深入学习之 event 聚合】event count累记聚合(采用 Patch),Message 聚合形成聚合 event(采用Create)

参考 15.深入k8s:Event事件处理及其源码分析 - luozhiyun - 博客园event 模块总览 EventRecorder:是事件生成者,k8s组件通过调用它的方法来生成事件;EventBroadcaster:事件广播器,负责消费EventRecorder产生的事件,然后分发给broadcasterWatcher;broadcasterWatcher:用…

AURIX TC3xx学习笔记2 GTM模块

文章目录 引言功能改进一些缩写 功能细节GTM Clock and Time Base Management (CTBM)Clock Management Unit (CMU)External Generation Unit (EGU)Configurable Clock Generation sub-unit (CFGU)Fixed Clock Generation (FXU) Time Base Unit (TBU) Cluster Configuration Mod…

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案

在CentOS上无Parallel时并发上传.wav文件的Shell脚本解决方案 背景概述解决方案脚本实现脚本说明使用指南注意事项在CentOS操作系统环境中,若需并发上传特定目录下的.wav文件至HTTP服务器,而系统未安装GNU parallel工具,我们可通过其他方法实现此需求。本文将介绍一种利用Sh…

QT通过在线安装器安装【详细】

在线安装器地址&#xff1a; 官方在线安装器&#xff1a;Index of /official_releases/online_installers (qt.io) 通过命令行启动安装页面 直接双击qt安装程序&#xff0c;在线安装会非常慢&#xff0c;甚至安装失败&#xff0c;所以通过命令行页面启动安装页面。点击wind…

保姆级教学 uniapp绘制二维码海报并保存至相册,真机正常展示图片二维码

一、获取二维码 uni.request({url: https://api.weixin.qq.com/wxa/getwxacode?access_token${getStorage("token")},responseType: "arraybuffer",method: "POST",data: {path: "/pages/index/index"},success(res) {// 转换为 Uint…

Unity类银河战士恶魔城学习总结(P166 Ailments FX 异常状态伤害粒子特效)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节创建了三种粒子特效&#xff0c;火焰&#xff0c;寒冰&#xff0c;雷电 主场景创建/特效/粒子 初始的例子特效 火焰 寒冰 雷电 En…

Java基于SpringBoot的网上订餐系统,附源码

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

[笔记] Windows 上 Git 安装详细教程:从零开始,附带每个选项解析

Git 是目前最流行的分布式版本控制系统之一&#xff0c;广泛应用于软件开发和项目管理中。对于 Windows 用户来说&#xff0c;正确安装和配置 Git 是开始使用 Git 的第一步。本文提供一份详细的指南&#xff0c;帮助你在 Windows 系统上顺利安装 Git&#xff0c;并解释每个安装…

JavaScript编写css自定义属性

一、自定义属性 是在 CSS 中定义的变量&#xff0c;以 --开头。它们可以存储颜色、尺寸、字体等任何 CSS 值&#xff0c;并且可以在整个文档中重复使用。 :root {--primary-color: #3498db;--font-size: 16px; }body {color: var(--primary-color);font-size: var(--font-siz…

项目开发之Jenkins

文章目录 思考基础概述JenkinsMavenGit集成开发部署GitLab服务安装 实战1 新建任务需要的配置pipeline最后 思考 jenkis怎么连接github仓库&#xff1f; jenkis的作用是什么&#xff1f;基础 概述 定义&#xff1a;Jenkins是一款开源的持续集成(Continuous Integration&…

core Webapi jwt 认证

core cookie 验证 Web API Jwt 》》》》用户信息 namespace WebAPI001.Coms {public class Account{public string UserName { get; set; }public string UserPassword { get; set; }public string UserRole { get; set; }} }》》》获取jwt类 using Microsoft.AspNetCore.Mvc…

TCP/IP协议详解(小白)

TCP/IP协议详解 TCP/IP协议包含了一系列的协议&#xff0c;也叫TCP/IP协议族&#xff08;TCP/IP Protocol Suite&#xff0c;或TCP/IP Protocols&#xff09;&#xff0c;简称TCP/IP。TCP/IP协议族提供了点对点的连结机制&#xff0c;并且将传输数据帧的封装、寻址、传输、路由…

Java项目实战II基于微信小程序的旅游社交平台(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着移动互联网的迅猛发展&#xff0c;旅游已经成为人…

jmeter配置

单接口运行没问题&#xff0c;但是批量执行100个线程数发现总是提示请求不合法 最后发现 需要将配置改成 正好回归一下这个配置&#xff1a; Ramp-Up时间&#xff08;秒&#xff09;的定义&#xff1a; Ramp-Up时间是指在JMeter测试中&#xff0c;所有指定的线程&#xff08…

SpringBoot 项目如何集成 JWT

SpringBoot 项目如何集成 JWT JWT JSON Web Token (JWT) 是一个开放标准(RFC 7519)&#xff0c;它定义了一种紧凑的、自包含的方式&#xff0c;用于作为 JSON 对象在各方之间安全地传输信息。 在 Oauth2 中&#xff0c;其实就是返回访问令牌 &#xff08;access_token&#…