php怎么连数据库查数据然后拿结果,简单点教你一步步操作
- 问答
- 2026-01-14 14:31:48
- 2
准备好你的数据库信息
你得先有个数据库,就像你要去朋友家,总得知道人家住哪儿对吧,把这些信息记下来:
- 数据库地址: 通常是
localhost,因为数据库和你的网站代码经常放在同一台服务器上,如果不是,就问你的服务器提供商。 - 数据库名: 你自己创建的数据库叫什么名字,
my_shop。 - 用户名: 登录这个数据库的账号,
root。 - 密码: 对应这个账号的密码。
第二步:创建连接
用PHP去敲门,建立连接,我们会用 try...catch 来抓错,万一连不上,好歹知道是为什么连不上。
<?php
// 你的数据库信息,换成你自己的
$servername = "localhost";
$username = "你的数据库用户名";
$password = "你的数据库密码";
$dbname = "你的数据库名";
try {
// 关键的一步:创建PDO连接对象
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// 设置一个错误模式,让PDO在出错时抛出异常,这样好排查
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "恭喜,数据库连接成功!<br>";
} catch(PDOException $e) {
// 如果try里面的代码出错了,就会跳到这里执行
echo "连接失败: " . $e->getMessage();
}
?>
把上面代码里的 你的数据库用户名 那些替换成你自己的信息,然后运行一下,如果看到“恭喜,数据库连接成功!”,那第一步就妥了。
第三步:写个SQL查询语句
连接上了,我们得告诉数据库我们要什么,这就需要写SQL语句,假设我们有一个叫 users 的表,里面存着用户信息(id, name, email)。
我们想查出所有用户的名字和邮箱。
// ... 接在刚才的连接代码后面,在 try{ 的大括号里面 ...
// 定义我们的SQL查询命令
$sql = "SELECT name, email FROM users";
// 告诉连接对象去准备执行这个SQL命令
$stmt = $conn->prepare($sql);
// 真正地执行它
$stmt->execute();
echo "查询成功!<br>";
这时候,查询结果已经悄悄地放在 $stmt 这个变量里了。

第四步:把结果拿出来并显示
查询结果可能有多条数据,我们需要把它们一条一条地取出来,有几种方法,这里说两种最常用的。
用 fetchAll() 一把全拿出来 这个方法适合结果数据量不大的情况,它会把所有结果变成一个数组。
// ... 接在执行成功的代码后面 ...
// 把结果集中的所有行取出来,放到一个叫$result的数组里
// PDO::FETCH_ASSOC 的意思是,让数组的键是字段名('name', 'email'),而不是数字索引。
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 检查一下是不是有结果
if (count($result) > 0) {
// 用foreach循环来遍历数组里的每一行数据
foreach($result as $row) {
// 每一行$row也是一个数组,里面装着这一条记录的数据
echo "姓名: " . $row['name'] . " - 邮箱: " . $row['email'] . "<br>";
}
} else {
echo "没有找到任何记录。";
}
用 fetch() 一行一行地拿 这个方法更节省内存,适合数据量很大的时候。
// ... 接在执行成功的代码后面 ...
// 设置结果集的获取模式为关联数组(和上面一样)
$stmt->setFetchMode(PDO::FETCH_ASSOC);
// 然后用while循环,每次fetch()取一行,取不到的时候就停止
while($row = $stmt->fetch()) {
echo "姓名: " . $row['name'] . " - 邮箱: " . $row['email'] . "<br>";
}
第五步:关掉连接

虽然PHP脚本执行完会自动关闭连接,但养成好习惯,手动关掉它。
// ... 在所有操作的最后 ... // 直接把连接对象设为null,连接就关闭了 $conn = null; echo "<br>连接已关闭。";
完整代码合体
把上面的步骤拼在一起,就是一个完整的脚本了:
<?php
$servername = "localhost";
$username = "你的数据库用户名";
$password = "你的数据库密码";
$dbname = "你的数据库名";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "连接成功!<br>";
$sql = "SELECT name, email FROM users";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($result) > 0) {
foreach($result as $row) {
echo "姓名: " . $row['name'] . " - 邮箱: " . $row['email'] . "<br>";
}
} else {
echo "没数据";
}
$conn = null;
echo "<br>连接关闭。";
} catch(PDOException $e) {
echo "出错啦: " . $e->getMessage();
}
?>
最后提醒一个超级重要的事:安全!
上面的例子是直接写了SQL语句,但如果你的查询条件是从用户那里来的(比如搜索框),千万不要直接把用户输入拼到SQL语句里,否则会有“SQL注入”攻击的风险,非常危险!
正确的方法是使用 参数绑定,像这样:
// 假设用户通过$_GET['user_id']传递了一个id过来
$user_id = $_GET['user_id'];
// SQL语句里用 :占位符 来代替变量
$sql = "SELECT name, email FROM users WHERE id = :user_id";
$stmt = $conn->prepare($sql);
// 把变量绑定到占位符上,PDO会自动处理安全问题
$stmt->bindParam(':user_id', $user_id);
$stmt->execute();
// ... 后面取数据的操作一样 ...
好了,以上就是从连接数据库到查询显示结果的全部基础操作,你只要把数据库信息和表名换成你自己的,就能跑起来了,多试几次,就熟悉了。
本文由芮以莲于2026-01-14发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/80599.html
