博客列表 >使用mysqli方式完成对一张商品信息表的增删改查操作

使用mysqli方式完成对一张商品信息表的增删改查操作

蔚蓝世纪
蔚蓝世纪原创
2020年05月15日 22:29:41776浏览

首先来看下我们的商品信息表的内容

接下来我们要使用mysqli方式完成对这张商品信息表的增删改查操作

一、连接数据库

1.配置参数:在根目录下创建文件/config/database.php,输入以下代码

  1. namespace pdo_goods;
  2. return[
  3. 'type' => $type ?? 'mysql',
  4. 'host' => $host ?? 'localhost',
  5. 'dbname' => $dbname ?? 'goods',
  6. 'charset' => $charset ?? 'utf8',
  7. 'port' => $port ?? '3306',
  8. 'username' => $username ?? 'root',
  9. 'password' => $password ?? 'root',
  10. ];

2.加载外部的数据库连接参数:在根目录下创建文件connect.php输入以下代码

  1. namespace mysqli_goods;
  2. use mysqli;
  3. $config = require __DIR__ . '/config/database.php';
  4. extract($config);
  5. $mysqli = new mysqli($host, $username, $password ,$dbname);
  6. if ($mysqli->connect_errno) echo $mysqli->connect_error;
  7. $mysqli->set_charset($charset);

二、操作数据库

1.查询数据库
  1. //单条查询
  2. require 'connect.php';
  3. $sql = "SELECT `id`, `name`, `standard` FROM `staffs` WHERE `price`>20";
  4. $mysqli_result = $mysqli->query($sql);
  5. if ($mysqli_result && $mysqli_result) {
  6. while ($staff = $mysqli_result->fetch_assoc()) {
  7. printf('<pre>%s</pre>', print_r($staff, true));
  8. }
  9. } else {
  10. echo '查询失败或没有查询到满足条件的商品';
  11. }
  12. $mysqli_result->free_result();
  13. $mysqli->close();

输出效果:

  1. //多条查询
  2. require 'connect.php';
  3. $sql = "SELECT `id`, `name`, `standard` FROM `staffs` WHERE `price`>20";
  4. $mysqli_result = $mysqli->query($sql);
  5. if ($mysqli_result && $mysqli_result->num_rows > 0){
  6. $staffs = $mysqli_result->fetch_all();
  7. foreach($staffs as $staff){
  8. vprintf('<li>编号:%s, 名称:%s, 规格:%s</li>',$staff);
  9. }
  10. // printf('<pre>%s</pre>',print_r($staff,true));
  11. }else {
  12. echo '查询失败或没有查询到满足条件的商品';
  13. }
  14. $mysqli_result->free_result();
  15. $mysqli->close();

输出效果:

2.新增数据库
  1. $arr = ['18524605265','哈哈果粒橙','350','6'];
  2. array_walk($arr,function(&$item,$key) {
  3. $item = "'$item'";
  4. });
  5. $data = implode(', ', $arr);
  6. $sql = "INSERT `staffs`(`Number`, `name`, `model`, `price`) VALUES ($data)";
  7. if($mysqli->query(($sql))) {
  8. if ($mysqli->affected_rows > 0) {
  9. echo '成功添加了' . $mysqli->affected_rows . '条记录,新增记录主键ID: ' . $mysqli->insert_id;
  10. } else {
  11. echo '没有添加新记录';
  12. }
  13. }else{
  14. die('添加失败' . $mysqli->errno . ':' . $mysqli->error);
  15. }
  16. $mysqli->close();

输出效果:

3.修改数据库
  1. require 'connect.php';
  2. $arr = ['name'=>'哈哈锅巴','model'=>'240','price'=>5];
  3. array_walk($arr, function(&$item, $key) {
  4. $item = "`$key`='$item'";
  5. });
  6. $data = implode(', ', $arr);
  7. $sql = "UPDATE `staffs` SET ". $data . " WHERE `id`=12";
  8. if($mysqli->query($sql)) {
  9. if ($mysqli->affected_rows > 0) {
  10. echo '成功更新了' . $mysqli->affected_rows . '条记录';
  11. } else {
  12. echo '没有更新任何记录';
  13. }
  14. }else{
  15. die('添加失败' . $mysqli->errno . ':' . $mysqli->error);
  16. }
  17. $mysqli->close();

输出效果:

4.删除数据库
  1. require 'connect.php';
  2. $sql = "DELETE FROM `staffs` WHERE `id`= 12";
  3. if($mysqli->query($sql)) {
  4. if ($mysqli->affected_rows > 0) {
  5. echo '成功删除了 id=' . $mysqli->affected_rows . '条记录';
  6. } else {
  7. echo '没有删除任何记录';
  8. }
  9. }else{
  10. die('删除失败' . $mysqli->errno . ':' . $mysqli->error);
  11. }
  12. $mysqli->close();

输出效果:

四、总结

1. 练习中出现”mysql错误 Out of range value for column ‘model’ at row 1”,意思是字段的值超过其可输入的范围了,就像int(10),但是导入的数据中有超出范围的,所以把字段的类型修改后,问题解决。
2. 关于“数据表的自增ID用完了怎么办?”这个问题:我觉得类似于计算机可以创建多少个文件夹?对于FAT16文件系统,每个卷上最多可以保存的文件数量是65,536个 (2^16);对于FAT32文件系统,每个卷中最多可以保存的文件数量是4,177,920个(2^32);对于NTFS文件系统,每个卷可以包含的文件个数的最大值是4,294,967,295个 (2^32 - 1)。既然创建文件夹都会有上限,那么数据表的自增ID也会有上限,用完了会报错。所以可以采用bigint unsigned更大的值,而且每一个表都应该设定一个主键,这就类似于我将2T的硬盘分了4个区,每个区可以创建(2^32-1)个文件夹,而每个文件夹里面又可以创建(2^32-1)个文件夹,这样循环下去,真的是一生二,二生三,三生万物呀。要是我银行里面的存款可以这样一直增加下去该多好,想想就让人兴奋。记得增加电脑内存呦~
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议