文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

PHP基础知识 - PHP 使用 MySQLI

2023-09-02 14:21

关注

一、PHP 使用 MySQLI

列举一些常用的 MySQLI 使用方法。本文需要你提前了解一些基本的 MySQL 增删改查语句 知识。


本文不作任何安全或验证方面的处理, 只列举示例。

1.0 MySQLI 执行 MySQL 语句

# 使用 query() 方法运行 MySQL 语句对象->query($sql_string);

1.1 连接 MySQL 与创建数据库与数据表

# 本文不作任何安全或验证方面的处理, 只记录每个命令的功能。$server_name = '127.0.0.1'; # 主机名或主机 IP$username = 'root'; # MySQL 用户名$password = 'root'; # MySQL 用户密码$db_name = 'test'; # 测试数据库名# 1. 创建 mysqli 实例, 连接 MySQL 数据库$connect_obj = new mysqli($server_name, $username, $password);# 连接错误码与错误原因if ($connect_obj->connect_error){    die("连接 MySQL 失败, 错误代码: " . $connect_obj->connect_errno . ', 错误描述: ' . $connect_obj->connect_error);}# 2. 创建数据库$create_database_sql = "CREATE DATABASE {$db_name}";$create_database_result = $connect_obj->query($create_database_sql);# 3. 选择数据库$select_db_result = $connect_obj->select_db($db_name);# 4. 创建数据表$create_table_sql = "CREATE TABLE `user` (          `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户的ID',          `user_name` varchar(140) NOT NULL DEFAULT '0' COMMENT '姓名',          `password` varchar(120) NOT NULL COMMENT '登录密码',          `sex` varchar(30) DEFAULT NULL COMMENT '性别',          `creattime` varchar(40) NOT NULL COMMENT '创建时间',          `is_del` enum('YES','NO') DEFAULT 'NO',          PRIMARY KEY (`id`)        ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='用户表';";$create_table_result = $connect_obj->query($create_table_sql);

1.2 字符集操作

MySQL 常见字符集有五种: BGKUTF8utf8mb4GB2312Latin1

# 设置默认字符集$cahrset_result = $connect_obj->set_charset('utf8');# 获取默认字符集$character_set_name = $connect_obj->character_set_name();

1.3 新增操作

$insert_sql = "INSERT INTO user (user_name, password, sex, creattime) VALUES ('Leslie','123456','MAN','1658569655')"; # SQL 语句$insert_result = $connect_obj->query($insert_sql); # 执行 SQL 语句$inseret_id = $connect_obj->insert_id; # 获取新插入数据的自增 ID

1.4 删除操作

$delete_sql = "DELETE FROM user WHERE id < 5"; # 删除功能的 SQL 语句$delete_result = $connect_obj->query($delete_sql); # 执行 SQL 语句$delete_affected_rows = $connect_obj->affected_rows; # 获取最近一条 SQL 语句执行后所影响的行数

1.5 修改操作

$update_sql = "UPDATE user SET user_name = 'Chon' WHERE id = 6"; # 删除功能的 SQL 语句$update_result = $connect_obj->query($update_sql); # 执行 SQL 语句$update_affected_rows = $connect_obj->affected_rows; # 获取最近一条 SQL 语句执行后所影响的行数

1.6 查询操作

# 先获取查询结果$select_all_sql = "SELECT * FROM user where id > 10";$select_all_result = $connect_obj->query($select_all_sql); # 执行 SQL 语句

1.6.1 获取多条数据

$assoc_all = mysqli_fetch_all($select_all_result, MYSQLI_ASSOC); # 从结果集中取所有行, 以关联数组返回$num_all = mysqli_fetch_all($select_all_result, MYSQLI_NUM); # 从结果集中取所有行, 以索引数组返回

1.6.2 获取单条数据

# 1. 对象格式$obj_row = mysqli_fetch_object($select_all_result); # 从结果集中取当前行, 以对象格式返回# 2. 数组格式 - 关联数组或索引数组$assoc_row_1 = mysqli_fetch_assoc($select_all_result); # 从结果集中取当前行, 以关联数组返回$num_row_1 = mysqli_fetch_row($select_all_result); # 从结果集中取当前行, 以索引数组返回# 3. 数组格式 - 关联数组或索引数组$assoc_row_2 = mysqli_fetch_array($select_all_result, MYSQLI_ASSOC); # 从结果集中取当前行, 以关联数组返回$num_row_2 = mysqli_fetch_array($select_all_result, MYSQLI_NUM); # 从结果集中取当前行, 以索引数组返回

1.6.3 获取结果集总数量

$rows_num = mysqli_num_rows($select_all_result);

1.6.4 数据处理

# 常用结果集处理方式, 循环结果集, 一行行处理# 关联数组格式处理方式, mysql_fetch_assoc 可用 1.6.2 中其它数据获取方式替换while ($row_array = mysqli_fetch_assoc($select_all_result)){    # 数据的一些处理}# 对象格式处理方式while ($row_object = mysqli_fetch_object($select_all_result)){    # 数据的一些处理}

1.6.5 释放结果内存

mysqli_free_result($select_all_result);

1.7 事务操作

# 事务 - 第一步: 关闭自动提交$connect_obj->autocommit(0); # 关闭自动提交# 事务 - 第二步: CUD 等操作$result = "SQL 操作"    # 事务 - 第三步: 提交事务或回滚事务if ($result){    # 如果运行结果正确, 则提交事务$connect_obj->commit();} else {    # 如果错误则回滚事务$connect_obj->rollback();}# 事务 - 第四步: 开启自动提交$connect_obj->autocommit(1);

1.8 获取其它信息

# 返回 MySQL 客户端库版本$client_info = $connect_obj->get_client_info();# 返回 MySQL 服务器端版本$server_info = $connect_obj->get_server_info();

1.9 关闭 MySQL 连接

# 关闭先前的 MySQL 连接$close_result = $connect_obj->close();

二、实例代码

# 本文不作任何安全或验证方面的处理, 只列举示例。$server_name = '127.0.0.1'; # 主机名或主机 IP$username = 'root'; # MySQL 用户名$password = 'root'; # MySQL 用户密码$db_name = 'test'; # 测试数据库名# 1. 创建 mysqli 实例, 连接 MySQL 数据库$connect_obj = new mysqli($server_name, $username, $password);# 错误码与错误原因if ($connect_obj->connect_error){    die("连接 MySQL 失败, 错误代码: " . $connect_obj->connect_errno . ', 错误描述: ' . $connect_obj->connect_error);}# 2. 创建数据库# 3. 选择数据库$select_db_result = $connect_obj->select_db($db_name);# 4. 创建数据表# 新增操作$insert_sql = "INSERT INTO user (user_name, password, sex, creattime) VALUES ('Leslie','123456','MAN','1658569655')"; # SQL 语句$insert_result = $connect_obj->query($insert_sql); # 执行 SQL 语句$inseret_id = $connect_obj->insert_id; # 获取新插入数据的自增 ID# 删除操作$delete_sql = "DELETE FROM user WHERE id < 5"; # 删除功能的 SQL 语句$delete_result = $connect_obj->query($delete_sql); # 执行 SQL 语句$delete_affected_rows = $connect_obj->affected_rows; # 获取最近一条 SQL 语句执行后所影响的行数# 修改操作$update_sql = "UPDATE user SET user_name = 'Chon' WHERE id = 6"; # 删除功能的 SQL 语句$update_result = $connect_obj->query($update_sql); # 执行 SQL 语句$update_affected_rows = $connect_obj->affected_rows; # 获取最近一条 SQL 语句执行后所影响的行数# 查询操作 - 开始# 查询数据$select_all_sql = "SELECT * FROM user where id > 10";$select_all_result = $connect_obj->query($select_all_sql); # 执行 SQL 语句# 1. 获取多条数据# $assoc_all = mysqli_fetch_all($select_all_result, MYSQLI_ASSOC); # 从结果集中取所有行, 以关联数组返回# $num_all = mysqli_fetch_all($select_all_result, MYSQLI_NUM); # 从结果集中取所有行, 以索引数组返回# 2. 获取单条数据# 1. 对象格式# $obj_row = mysqli_fetch_object($select_all_result); # 从结果集中取当前行, 以对象格式返回# 2. 数组格式 - 关联数组或索引数组# $assoc_row_1 = mysqli_fetch_assoc($select_all_result); # 从结果集中取当前行, 以关联数组返回# $num_row_1 = mysqli_fetch_row($select_all_result); # 从结果集中取当前行, 以索引数组返回# 3. 数组格式 - 关联数组或索引数组# $assoc_row_2 = mysqli_fetch_array($select_all_result, MYSQLI_ASSOC); # 从结果集中取当前行, 以关联数组返回# $num_row_2 = mysqli_fetch_array($select_all_result, MYSQLI_NUM); # 从结果集中取当前行, 以索引数组返回# 3. 获取结果集总数量$num_rows = mysqli_num_rows($select_all_result);# 4. 数据处理# 常用结果集处理方式, 循环结果集, 一行行处理# 关联数组格式处理方式, mysql_fetch_assoc 可用 1.6.2 中其它数据获取方式替换while ($row_array = mysqli_fetch_assoc($select_all_result)){    # 数据的一些处理}# 对象格式处理方式while ($row_object = mysqli_fetch_object($select_all_result)){    # 数据的一些处理}# 5. 释放结果内存mysqli_free_result($select_all_result);# 查询操作 - 结束# 事务 - 开始# 事务 - 第一步: 关闭自动提交$connect_obj->autocommit(0); # 关闭自动提交# 事务 - 第二步: CUD 等操作$result = "SQL 操作";# 事务 - 第三步: 提交事务或回滚事务if ($result){    # 如果运行结果正确, 则提交事务    $connect_obj->commit();} else {    # 如果错误则回滚事务    $connect_obj->rollback();}# 事务 - 第四步: 开启自动提交$connect_obj->autocommit(1);# 事务 - 结束# 返回 MySQL 客户端库版本$client_info = $connect_obj->get_client_info();# 返回 MySQL 服务器端版本$server_info = $connect_obj->get_server_info();# 关闭先前的 MySQL 连接$close_result = $connect_obj->close();

来源地址:https://blog.csdn.net/qq_35453862/article/details/125960324

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯