批改状态:合格
老师批语:拼装sql语句的方式很多, 我用array_walk()只是其中一种方式, 或者你还有更好的办法,想想看
DROP TABLE IF EXISTS `goods`;create table `goods` (`id` int unsigned not null auto_increment,`name` varchar(20) COLLATE utf8mb4_unicode_ci not null,`stock` int unsigned not null,`price` float,PRIMARY KEY(`id`))ENGINE=InnoDB auto_increment=1 default charset=utf8mb4 COLLATE=utf8mb4_unicode_ci;
<?phpnamespace mysqli_eud;return ['type' => $type ?? 'mysql','host' => $host ?? 'localhost','charset' => $charset ?? 'utf8','dbname' => $dbname ?? 'phpedu','username' => $username ?? 'root','password' => $password ?? 'root'];
<?phpnamespace mysqli_edu;use mysqli;//1、引入数据库配置文件$config = require __DIR__ . './config/database.php';// 2. mysqli 连接四大参数// 2.1 数据库的主机名: host// 2.1 用户名: username// 2.3 用户密码: password// 2.4 默认的数据库 :dbname/*** @var string $host* @var string $username* @var string $password* @var string $dbanme* @var string $charset*///将关联数组键值对转为变量的名值对extract($config);//2.链接数据库$mysqli = new mysqli($host, $uername, $password, $dbname);//3.判断是否链接成功if ($mysqli->connect_errno) echo $mysqli->connect_error;//4.设置客户端编码字符集$mysqli->set_charset($charset);// var_dump($mysqli);
<?phpnamespace select;use mysqli;use mysqli_result;//1.连接数据库require 'connect.php';//2.操作数据库$sql = "select * from `goods`";$mysqli_result = $mysqli->query($sql);//指针复位$mysqli_result->data_seek(0);// var_dump($mysqli_result);if ($mysqli_result && $mysqli_result->num_rows > 0) {$goods = $mysqli_result->fetch_all();foreach ($goods as $good) {vprintf('<li>编号:%s , 名称: %s , 库存: %s, 价格: %s</li>', $good);}}

<?phpnamespace insert;use mysqli;//1.链接数据库require 'connect.php';//2.数据库操作$data = ['啤酒', '49', '5'];array_walk($data, function (&$item, $key, $length) {if ($key < $length - 1) $item = "'$item'";}, count($data));$str = implode(',', $data);$sql = "insert `goods` (`name`, `stock`, `price`) values ($str)";// echo $sql;// die;if ($mysqli->query($sql)) {echo '成功添加了 ' . $mysqli->affected_rows . ' 条记录, 新增记录主键ID: ' . $mysqli->insert_id;} else {die('添加失败' . $mysqli->errno . ' : ' . $mysqli->error);}//3.关闭连接$mysqli->close();

<?phpnamespace update;use mysqli;require 'connect.php';$arr = ['name' => '酸奶', 'stock' => 56, 'price' => 8];array_walk($arr, function (&$item, $key) {$item = "`$key` = '$item'";});$data = implode(', ', $arr);$sql = "update `goods` set $data where `id` = 6";// var_dump($sql);// die;if ($mysqli->query($sql)) {if ($mysqli->affected_rows > 0) {echo '成功更新了 ' . $mysqli->affected_rows . ' 条记录';} else {echo '没有更新任何记录';}} else {die('更新失败' . $mysqli->errno . ' : ' . $mysqli->error);}// 3. 关闭连接// 释放结果集$mysqli->close();

<?phpnamespace delete;use mysqli;//1.连接数据库require "connect.php";//2.数据库操作$sql = "delete from `goods` where `id`=" . $_GET['id'];if ($mysqli->query($sql)) {if ($mysqli->affected_rows > 0) {echo '成功删除了id=' . $_GET['id'] . '的记录';}} else {die('删除失败' . $mysqli->errno . ':' . $mysqli->error);}

总结:mysqli操作数据库和pdo操作数据库的步骤几乎差不多都是分成三步,连接数据库、数据库操作、关闭连接(可选)。重点是在第二部数据库的操作部分,特别是在增和改时,需要用到数组函数array_walk()对数据进行处理。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号