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

首先,温馨提示,该部分内容跟昨天"PHP语法学习(第八天)---PHP连接mysql详解(上)"一起食用更佳噢!!

学习本篇内容必须掌握数据库基础命令点击"MYSQL 数据库"~~

本文是接着PHP连接mysql的知识点接着讲,今天主要讲述PHP连接mysql之后对数据库的内容进行操作✔️✔️✔️

另外,想学习更多PHP语法相关内容请点击"PHP专栏"~~

废话少说,进入正题~~~

文章目录

  • [PHP 创建 MySQL 表](#PHP 创建 MySQL 表)
    • [MYSQL 表的数值限制](#MYSQL 表的数值限制)
    • [MySQLi - 面向对象](#MySQLi - 面向对象)
    • [MySQLi - 面向过程](#MySQLi - 面向过程)
    • PDO方式创建表
  • [PHP MySQL 插入数据](#PHP MySQL 插入数据)
  • [PHP MySQL 插入多条数据](#PHP MySQL 插入多条数据)
  • 预处理语句插入数据
    • [利用`mysqli` 扩展运行预处理语句](#利用mysqli 扩展运行预处理语句)
    • 实例
  • [PHP MySQL 查询表内数据](#PHP MySQL 查询表内数据)
  • [PHP MySQL Where 子句](#PHP MySQL Where 子句)
  • [PHP MySQL的 数据更新](#PHP MySQL的 数据更新)
  • [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 复制代码
<?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 复制代码
<?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方式创建表

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 创建数据表
    $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 表添加新的记录:
php 复制代码
INSERT INTO table_name(字段名1,字段名2,...) VALUES (value1, value2, value3,...)

插入数据要注意

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

MySQLi 向 MySQL 插入数据

面向对象

php 复制代码
<?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 ('新之助', '野原', '[email protected]')";
 
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
 
$conn->close();
?>

面向过程

php 复制代码
<?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 ('新之助', '野原', '[email protected]')"; 
if (mysqli_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

PDO向 MySQL 插入数据

php 复制代码
<?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 ('新之助', '野原', '[email protected]')";
    // 使用 exec() ,没有结果返回 
    $conn->exec($sql);
    echo "新记录插入成功";
}

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

PHP MySQL 插入多条数据

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

面向对象

php 复制代码
<?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 ('新之助', '野原', '[email protected]')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', '[email protected]')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', '[email protected]')";
if ($conn->multi_query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
 $conn->close();
?>

面向过程

php 复制代码
<?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 ('新之助', '野原', '[email protected]')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', '[email protected]')";
$sql .= "INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', '[email protected]')";
if (mysqli_multi_query($conn, $sql)) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
 
mysqli_close($conn);
?>

PDO插入多条数据

php 复制代码
<?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 ('新之助', '野原', '[email protected]')");
  $conn->exec("INSERT INTO LXJtable(firstname, lastname, email) VALUES ('xj', 'Lian', '[email protected]')");
  $conn->exec("INSERT INTO LXJtable(firstname, lastname, email) VALUES ('ENSON', 'Chen', '[email protected]')");
    // 提交数据
  $conn->commit();
  echo "新记录插入成功";
}
catch(PDOException $e)
{
    // 如果执行失败回滚
    $conn->rollback();
    echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>

预处理语句插入数据

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

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

实例

php 复制代码
 <?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 = '[email protected]';
        mysqli_stmt_execute($stmt);
        $firstname = '广志';
        $lastname = '野原';
        $email = '[email protected]';
        mysqli_stmt_execute($stmt);
        $firstname = '美伢';
        $lastname = '野原';
        $email = '[email protected]';
        mysqli_stmt_execute($stmt);
    }
}
?>

PHP MySQL 查询表内数据

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

php 复制代码
SELECT column_name(s) FROM table_name

实例:

  • 面向对象
php 复制代码
<?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 复制代码
<?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中的语法:
php 复制代码
SELECT column_name(s) FROM table_name  WHERE column_name operator value

实例:

php 复制代码
<?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语句用于修改表中已存在的记录
php 复制代码
UPDATE table_name  SET column1 = value1, column2 = value2, ... 
WHERE condition;

实例

php 复制代码
<?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语句用于从数据库表中删除现有的记录
php 复制代码
DELETE FROM table_name WHERE condition;

实例

php 复制代码
<?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!!!!

ℹ️欢迎各位在评论区踊跃讨论,积极提出问题,解决困惑!!!

相关推荐
汇能感知2 分钟前
光谱相机的光谱数据采集原理
经验分享·笔记·科技
H1346948908 分钟前
华为服务器系统备份,想要备份华为服务器系统可以怎么操作?
运维·服务器·负载均衡
杰克崔25 分钟前
分析sys高问题的方法总结
linux·运维·服务器
WSSWWWSSW25 分钟前
安装nfs客户端(centos)
linux·运维·centos
人人题25 分钟前
汽车加气站操作工考试答题模板
笔记·职场和发展·微信小程序·汽车·创业创新·学习方法·业界资讯
深蓝易网26 分钟前
为什么制造企业需要用MES管理系统升级改造车间
大数据·运维·人工智能·制造·devops
THRUSTER1111128 分钟前
MySQL-- 函数(单行函数):数值函数, 字符串函数
数据库·mysql·函数·navicat·单行函数
moongoblin34 分钟前
杂篇-行业分类一二-2(通、专用设备制造,汽车制造)
经验分享·汽车·制造
橙序研工坊34 分钟前
MySQL的进阶语法7(索引-B+Tree 、Hash、聚集索引 、二级索引(回表查询)、索引的使用及设计原则
数据库·sql·mysql
小脑斧爱吃鱼鱼40 分钟前
鸿蒙项目笔记(1)
笔记·学习·harmonyos