PHP mysqli 怎么用
做网站或小工具时,很多人会遇到“怎么让网页和数据库对话”的问题,比如想做一个用户留言板,得把用户写的内容存到后台,或者从后台调出历史留言,这时候就需要一个好用的工具来连接网页和数据库,PHP的mysqli就是很常用的一个。
先搞懂mysqli是什么,不用记复杂定义
不用纠结术语,你可以把mysqli当成“网页和数据库的专属翻译员+接线员”:你用PHP写的网页,说的是“网页语言”,数据库(比如常用的MySQL)说的是“数据库语言”,mysqli就是中间的角色——它先把网页的请求翻译成数据库能听懂的话,再把数据库返回的结果转成网页能显示的内容。

举个生活化的例子:你想给远方的朋友寄信(网页要存数据到数据库),mysqli就是快递员:你写好信(PHP代码),快递员帮你把信送到朋友手里(数据库),再把朋友的回信(数据库的结果)带回来给你。
第一步:先搭好“接线的基础”
用mysqli的前提是你的PHP和MySQL都正常开着,而且得提前准备好几个关键信息,就像寄信要知道收件人的地址、姓名一样:
- 数据库服务器地址:本地测试的话一般是
localhost(就是你自己电脑的数据库); - 数据库用户名:本地测试常用
root(这是数据库的默认管理员账号); - 数据库密码:本地测试如果没设过密码,一般是空,或者你自己设的密码;
- 要操作的数据库名字:比如你建了个叫
test的数据库,就用这个名字。
举个测试的小例子,先试试能不能连上线:
`php
// 1. 用mysqli创建连接,把刚才准备的信息填进去
$conn = new mysqli('localhost', 'root', '你的密码', 'test');
// 2. 检查连接有没有成功
if ($conn->connect_error) {
// 连不上的话就停在这里,输出错误信息
die("连接失败:" . $conn->connect_error);
}
// 连上的话,先设置编码,避免中文乱码(比如留言里的“你好”变成乱码)
$conn->set_charset('utf8mb4');
echo "连接数据库成功!";
`
这一步就像先试一下快递员能不能正常取件,要是连不上,后面的寄信、取信都做不了。
第二步:存数据到数据库——就像寄信
连上数据库后,最常用的操作是把数据存进去,比如存用户的留言。假设你有个留言表叫messages,有两个字段:content(留言内容)和add_time(留言时间),要存一条新留言的话,写这样的代码:
`php
// 先准备要存的数据,比如用户提交的留言内容
$userContent = '今天天气真好!';
// 把留言时间也准备好,用PHP的时间函数生成当前时间
$addTime = date('Y-m-d H:i:s');
// 写“寄信请求”——插入数据的SQL语句(不用怕,就像你给朋友写的信)
$sql = "INSERT INTO messages (content, add_time) VALUES ('$userContent', '$addTime')";
// 把请求发给mysqli,让它转交给数据库
if ($conn->query($sql) === TRUE) {
// 成功了就输出提示
echo "留言提交成功!";
} else {
// 失败了输出原因
echo "提交失败:" . $conn->error;
}
`
这里要注意一个小细节:如果是用户自己输入的内容(比如留言框的内容),一定要用mysqli的“安全处理”,就像寄信前把信装在信封里,防止快递中途被改内容,代码里用$conn->real_escape_string()处理一下就行,比如:
`php
$userContent = $conn->real_escape_string($_POST['content']); // 从表单取用户输入
`
第三步:从数据库取数据——就像收回信
存好数据后,接下来要把留言显示在网页上,也就是从数据库“取回信”,代码也很简单:
`php
// 写“取信请求”——查询所有留言的SQL语句
$sql = "SELECT * FROM messages ORDER BY add_time DESC"; // 按时间倒序,最新的在前面
$result = $conn->query($sql);
// 检查有没有收到回信(有没有数据)
if ($result->num_rows > 0) {
// 每一行数据就像一封信,循环把所有信打开看内容
while($row = $result->fetch_assoc()) {
// 把留言内容和时间显示出来
echo "留言:" . $row['content'] . " | 时间:" . $row['add_time'] . "<br>";
}
} else {
echo "还没有留言哦~";
}
`
这里的fetch_assoc()就是把数据库返回的一行数据,转成网页能直接用的数组,像拆快递一样,把包裹里的东西(数据)拿出来。
最后:用完别忘了“收尾”
就像寄完信要跟快递员说再见,用完数据库一定要关闭连接,既节约资源,又不会出问题:
`php
// 最后关闭连接
$conn->close();
`
其实mysqli的核心就是“创建连接→写请求(SQL)→执行请求→处理结果→关闭连接”,不用怕记复杂的代码,做小项目的时候照着套就行,熟练几次就会发现,它就是个帮你搞定网页和数据库对话的好用工具。