查询SQL数据库
问题
希望从数据库获取一些数据。
解决方案
使用PDO::query()向数据库发送SQL查询,然后利用一个foreach循环获取每行结果。
向数据库发送查询
// 设置数据库连接所需的用户名
$user = 'admin';
// 设置数据库连接所需的密码
$password = '123456';
// 创建一个PDO实例来连接到MySQL数据库
// DSN(数据源名称)包含数据库类型(mysql)、主机名(127.0.0.1)、端口号(3306)和数据库名(dvwa)
$db = new PDO('mysql:host=127.0.0.1;port=3306;dbname=dvwa', $user, $password);
// 使用PDO实例的query方法执行SQL查询
// 该查询从zodiac表中选择symbol和planet两列,并按id列升序排序
$st = $db->query('SELECT symbol,planet FROM zodiac ORDER BY id ASC');
// 使用fetchAll方法从结果集中获取所有行
// fetchAll方法返回一个包含所有行的数组,其中每行都是一个关联数组,键是列名
foreach($st->fetchAll() as $row){
// 在foreach循环中,$row代表结果集中的一行
// 通过$row数组的键(列名)来访问对应的值
// 使用双引号和花括号插值来拼接字符串和变量
print "{$row['symbol']} goes with {$row['planet']}
";
}
获取各行
// 定义数据库用户名
$user = 'admin';
// 定义数据库密码
$password = '123456';
// 使用PDO创建一个新的数据库连接
// 'mysql:host=127.0.0.1;port=3306;dbname=dvwa' 是DSN(数据源名称),包含了数据库的类型(mysql),主机地址(127.0.0.1),端口号(3306),以及数据库名(dvwa)
$db = new PDO('mysql:host=127.0.0.1;port=3306;dbname=dvwa', $user, $password);
// 使用PDO的query方法执行SQL查询
// 这里执行的查询是:从'zodiac'表中选择'symbol'和'planet'字段,并按'planet'字段排序
$rows = $db->query('SELECT symbol,planet FROM zodiac ORDER BY planet');
// 使用fetch方法从查询结果中获取第一行数据
// fetch方法默认获取结果集的下一条记录,并将其作为关联数组返回(字段名作为键)
$firstRow = $rows->fetch();
// 打印出第一行数据的'symbol'和'planet'字段
// 注意:这里的字符串插值使用了花括号语法来嵌入数组元素的值
print "The first results are that {$firstRow['symbol']} goes with {$firstRow['planet']}";
fetch()方法一次返回一行。要让fetch()以不同的格式返回记录行,可以向query()传入PD0::FETCH*常量作为第二个参数。还可以传入某个常量作为fetch()的第一个参数。根据这些常量fetch()会返回什么结果。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战