批改状态:合格
老师批语:总结的不错

在 php5.3 版本之后,想要连接数据库有两种方案,一种是通过 mysqli,另外一种是通过 pdo。如需要了解 pdo 的基础操作可以看我的上一篇博文,本文主要说的是如果通过 mysqli 面向对象的写法操作数据库。
<?phpnamespace mysqli_edu;// 数据库连接配置参数return [// 数据库的类型'type' => $type ?? 'mysql',// 数据库默认主机'host' => $host ?? 'localhost',// 默认数据库'dbname' => $dbname ?? 'php',// 默认字符编码集'charset' => $charset ?? 'utf8',// 默认端口号'port' => $port ?? '3306',// 默认的用户名'username' => $username ?? 'root',// 默认的用户密码'password' => $password ?? 'root123456',];
$mysqli = new mysqli($host, $username, $password, $dbname);
if ($mysqli->connect_errno) echo $mysqli->connect_error; //可选操作
$mysqli->set_charset($charset);
$mysqli_result->free_result();$mysqli->close();
$host = "localhost";$username = "root";$password = "";// 创建连接$conn = new mysqli($host,$username,$password);if($conn->connect_error){die("连接失败,错误:" . $conn->connect_error);}
// 设置sql语句$sql = "create database php_edu default character set = 'utf8' ";
// 发送sql语句 并且验证是否创建成功if($conn->query($sql) === TRUE){echo "数据库创建成功.";}else {echo "数据库创建失败 ,错误信息为:" . $conn->error; // 如果失败输出错误信息}
// 关闭数据库$conn->close();
需要注意的是,如果你使用其他端口(默认为 3306),为数据库参数添加空字符串,如: new mysqli(“localhost”, “username”, “password”, “”, port)
mysqli 创建数据表mysqli创建数据表首先我们先来完成基本的数据库连接操作,需要注意的是,因为我们是在数据库中创建一个数据表,所以需要在额外的配置一下数据库的信息:
$host = "localhost";$username = "root";$password = "";$dbname = "php_edu"; // 要操作的数据库名// 创建连接$conn = new mysqli($host,$username,$password,$dbname); // 第四个参数if($conn->connect_error){die("连接失败,错误:" . $conn->connect_error);}
create table php_info(id int(6) unsigned auto_increment primary key,firstname varchar(30) not null,lastname varchar(30) not null,email varchar(50),reg_date timestamp)
NOT NULL - 每一行都必须含有值(不能为空),null 值是不允许的。DEFAULT value - 设置默认值UNSIGNED - 使用无符号数值类型,0 及正数AUTO INCREMENT - 设置 MySQL 字段的值在新增记录时每次自动增长 1PRIMARY KEY - 设置数据表中每条记录的唯一标识。 通常列的 PRIMARY KEY 设置为 ID 数值,与 AUTO_INCREMENT 一起使用。
每个表都应该有一个主键(本列为 “id” 列),主键必须包含唯一的值
// 使用sql 创建数据表$sql = "create table php_info(id int(6) unsigned auto_increment primary key,firstname varchar(30) not null,lastname varchar(30) not null,email varchar(50),reg_date timestamp)";
if($conn->query($sql) === TRUE){echo "数据表创建成功。";}else {echo "数据表创建失败,错误信息:" . $conn->error;}// 关闭数据库连接$conn->close();
mysqli_set_charset($conn,'utf8'); // 解决乱码问题
<?php//新增操作require 'connect.php';$arr = ['神仙水', '88', '10', '太上老君'];array_walk($arr, function (&$item, $key) {$item = "'$item'";});$data = implode(', ', $arr);$sql = "INSERT `business` (`name`,`prices`,`num`,`adminer`) VALUES($data)";// echo $sql;// $mysqli数据库连接对象if ($mysqli->query($sql)) {if ($mysqli->affected_rows > 0) {echo '成功添加了' . $mysqli->affected_rows . '条记录,新添加的主键ID:' . $mysqli->insert_id;} else {echo '没有添加记录';}} else {die('添加失败' . $mysqli->errno . ':' . $mysqli->error);}// 关闭数据库,可选//释放结果集占用的内存// $mysqli_result->free_result();$mysqli->close();
<?phprequire 'connect.php';$sql = "SELECT `id`,`name` FROM `business` WHERE `num`>500000";// $mysqli数据库连接对象$mysqli_result = $mysqli->query($sql); //sql语句$mysqli_result->fetch_all();//指针复位$mysqli_result->data_seek(0);// echo $mysqli_result->num_rows;if ($mysqli_result && $mysqli_result->num_rows > 0) {$res = $mysqli_result->fetch_all(MYSQLI_ASSOC);foreach ($res as $re) {vprintf('<li>编号:%s,名称:%s</li>', $re);}} else {echo '查询失败,或者没有符合条件的记录';}// 关闭数据库,可选//释放结果集占用的内存$mysqli_result->free_result();$mysqli->close();
<?php//新增操作require 'connect.php';$sql = "DELETE FROM `business` WHERE `id`=" . $_GET['id'];// echo $sql;// die;// $mysqli数据库连接对象if ($mysqli->query($sql)) {if ($mysqli->affected_rows > 0) {echo '成功删除了' . $mysqli->affected_rows . '条记录';} else {echo '没有删除记录';}} else {die('删除失败' . $mysqli->errno . ':' . $mysqli->error);}// 关闭数据库,可选//释放结果集占用的内存// $mysqli_result->free_result();$mysqli->close();
<?php//新增操作require 'connect.php';$arr = ['name' => '忘泉水', 'adminer' => '玉皇大帝'];array_walk($arr, function (&$item, $key) {$item = "`$key`='$item'";});$data = implode(', ', $arr);// echo $data;// die;$sql = "UPDATE `business` SET " . $data . " WHERE `id`=14 ";// echo $sql;// die;// $mysqli数据库连接对象if ($mysqli->query($sql)) {if ($mysqli->affected_rows > 0) {echo '成功更新了' . $mysqli->affected_rows . '条记录';} else {echo '没有更新记录';}} else {die('更新失败' . $mysqli->errno . ':' . $mysqli->error);}// 关闭数据库,可选//释放结果集占用的内存// $mysqli_result->free_result();$mysqli->close();
在上面的代码中,我们尝试了通过 mysqli 对 mysql 数据进行的增删改查操作,其中较为核心的是,sql 语句的使用。下面我们来说一下常用的 sql 语句语法:
create database 数据库名 default character set = 'utf8';
create table 数据表名 (-- 下面是表中的一些字段id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,firstname VARCHAR(30) NOT NULL,lastname VARCHAR(30) NOT NULL,email VARCHAR(50),reg_date TIMESTAMP)
insert into table_name (column1, column2, column3,...) values (value1, value2, value3,...)
select column_name(s) from table_name
如果传入一个*,则表示搜索所有的数据
update table_nameset column1=value, column2=value2,...where some_column=some_value
delete from table_namewhere some_column = some_value
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号