Blogger Information
Blog 43
fans 1
comment 0
visits 33972
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
使用mysqli方式完成对一张商品信息表的增删改查操作
蔚蓝世纪
Original
785 people have browsed it

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

接下来我们要使用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)个文件夹,这样循环下去,真的是一生二,二生三,三生万物呀。要是我银行里面的存款可以这样一直增加下去该多好,想想就让人兴奋。记得增加电脑内存呦~
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:写的很有意思
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post