博客列表 >php学习:第17章 PHP操作数据库(MySQLi版)

php学习:第17章 PHP操作数据库(MySQLi版)

王小飞
王小飞原创
2020年05月08日 11:18:29596浏览

数据库账户文件

  1. <?php
  2. namespace mysqli_edu;
  3. // 数据库连接配置参数
  4. return [
  5. // 数据库的类型
  6. 'type' => $type ?? 'mysql',
  7. // 数据库默认主机
  8. 'host' => $host?? 'localhost',
  9. // 默认数据库
  10. 'dbname'=> $dbname ?? 'php',
  11. // 默认字符编码集
  12. 'charset'=> $charset ?? 'utf8',
  13. // 默认端口号
  14. 'port'=> $port ?? '3306',
  15. // 默认的用户名
  16. 'username'=> $username ?? 'root',
  17. // 默认的用户密码
  18. 'password'=> $password ?? 'root',
  19. ];

数据库连接文件

  1. <?php
  2. namespace mysqli_edu;
  3. use mysqli;
  4. // 1. 加载外部的数据库连接参数
  5. $config = require __DIR__ . '/config/database.php';
  6. extract($config);
  7. // 将关联数组中的键值对, 转为变量的名值对
  8. // 2. 连接数据库
  9. $mysqli = new mysqli($host, $username, $password, $dbname);
  10. // 3. 判断是否连接成功?
  11. if ($mysqli->connect_errno) echo $mysqli->connect_error;
  12. // 4. 设置客户端默认的字符编码集
  13. $mysqli->set_charset($charset);
  14. // var_dump($mysqli);

1.查询操作

  1. <?php
  2. // 查询2: 多条记录
  3. // 1. 连接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. $sql = "SELECT * FROM `spxx` LIMIT 50";
  7. $mysqli_result = $mysqli->query($sql);
  8. if ($mysqli_result && $mysqli_result->num_rows > 0 ) {
  9. $staffs = $mysqli_result->fetch_all();
  10. foreach ($staffs as $staff) {
  11. // vprintf() 与 printf()功能一样, 区别 就是参数是数组
  12. vprintf('<per>id: %s <br>商品名称: %s <br>描述: %s <br> 价格: %s <br>版本: %s <br>颜色: %s <br>套餐: %s <br>详情: %s<hr></per>', $staff);
  13. }
  14. } else {
  15. echo '查询失败或没有查询到满足条件的员工';
  16. }
  17. // 3. 关闭连接
  18. // 释放结果集
  19. // $mysqli_result->free_result();
  20. $mysqli->close();

输出结果:

新增操作

  1. <?php
  2. // 新增操作
  3. // 1. 连接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. // 前端表单->json格式的字符串, php将这种json字符串转为数组/对象
  7. $arr = ['iQOO 3 5G版 12GB+128GB 驭影黑', '高通骁龙865,双模5G;55W超快闪充;支持LPDDR5+UFS 3.1+Wi-Fi6。KPL顶级电竞模式,180Hz触控加速', 3998, '全网通', '黑色', '官方标配', '这里是描述,有点长'];
  8. array_walk($arr, function(&$item, $key) {
  9. $item = "'$item'";
  10. });
  11. $data = implode(', ', $arr);
  12. $sql = "INSERT `spxx` (`name`,`miaoshu`,`jiage`,`banebn`,`yanse`,`taocan`,`xiangqing`) VALUES ($data)";
  13. if ($mysqli->query($sql)) {
  14. if ($mysqli->affected_rows > 0) {
  15. echo '成功添加了 ' . $mysqli->affected_rows . ' 条记录, 新增记录主键ID: ' . $mysqli->insert_id;
  16. } else {
  17. echo '没有添加新记录';
  18. }
  19. } else {
  20. die('添加失败'. $mysqli->errno . ' : ' . $mysqli->error);
  21. }
  22. echo $sql;
  23. // 3. 关闭连接
  24. // 释放结果集
  25. $mysqli->close();

修改操作

  1. <?php
  2. // 更新操作
  3. // 1. 连接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. // 前端表单->json格式的字符串, php将这种json字符串转为数组/对象
  7. $arr = ['name'=>'iQOO 手机', 'jiage'=>2999];
  8. array_walk($arr, function(&$item, $key) {
  9. $item = "`$key` = '$item'";
  10. });
  11. $data = implode(', ', $arr);
  12. $sql = "UPDATE `spxx` SET " . $data . " WHERE `id` = 2";
  13. if ($mysqli->query($sql)) {
  14. if ($mysqli->affected_rows > 0) {
  15. echo '成功更新了 ' . $mysqli->affected_rows . ' 条记录';
  16. } else {
  17. echo '没有更新任何记录';
  18. }
  19. } else {
  20. die('更新失败'. $mysqli->errno . ' : ' . $mysqli->error);
  21. }
  22. // 3. 关闭连接
  23. // 释放结果集
  24. $mysqli->close();

删除操作

  1. <?php
  2. // 删除操作
  3. // 1. 连接数据库
  4. require 'connect.php';
  5. // 2. 操作数据库
  6. $sql = "DELETE FROM `spxx` WHERE `id` =" . $_GET['id'];
  7. if ($mysqli->query($sql)) {
  8. if ($mysqli->affected_rows > 0) {
  9. echo '成功删除了 id=' .$_GET['id'] . ' 的记录';
  10. } else {
  11. echo '没有删除任何记录';
  12. }
  13. } else {
  14. die('删除失败'. $mysqli->errno . ' : ' . $mysqli->error);
  15. }
  16. // 3. 关闭连接
  17. $mysqli->close();

总结:数据库的增查改删基本都懂了,今天在预习下回话。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议