php查询数据怎么写_单表无条件查询核心语句写法【方法】

13次阅读

mysqli_query()执行无条件查询返回的是mysqli_result对象而非数组,必须用mysqli_fetch_assoc()等函数提取数据;pdo中可用query()直接查询,无需prepare(),再用fetch()获取结果。

php查询数据怎么写_单表无条件查询核心语句写法【方法】

php 中用 mysqli_query() 执行单表无条件查询最简写法

直接用 mysqli_query() 发送 select * FROM 表名 就能拿到结果集,但必须配合 mysqli_fetch_assoc() 或类似函数才能转成 PHP 数组。不处理返回值的话,你看到的只是个资源(Resource)或对象,不是数据。

  • mysqli_query() 返回的是结果集(mysqli_result 对象),不是数组
  • 必须用 mysqli_fetch_assoc()mysqli_fetch_array()循环配合才能取出行数据
  • 没加 WHERE 就是无条件,但别漏了分号和引号——常见错误是写成 "SELECT * FROM users" 却忘了前面的连接句柄
mysql_connect('localhost', 'root', '123'); mysqli_select_db($conn, 'test'); $result = mysqli_query($conn, "SELECT * FROM users"); while ($row = mysqli_fetch_assoc($result)) {     echo $row['name'] . "n"; }

PDO 方式查单表:prepare() 不是必须的,query() 更直接

无条件查询不需要参数绑定,用 PDO::query()prepare() + execute() 更轻量。很多人一上来就套 prepare,反而多写两行还容易忘记调 execute()

  • query() 直接返回 PDOStatement,可直接 fetch()fetchAll()
  • 若用 prepare(),必须调 execute(),否则查不到数据
  • 默认 fetch 模式是 PDO::FETCH_BOTH,推荐显式设为 PDO::FETCH_ASSOC 避免下标混淆
$pdo = new PDO("mysql:host=localhost;dbname=test", "root", "123"); $stmt = $pdo->query("SELECT * FROM users"); $stmt->setFetchMode(PDO::FETCH_ASSOC); while ($row = $stmt->fetch()) {     echo $row['id'] . ': ' . $row['email'] . "n"; }

查出来是空数组?先确认这三件事

执行完查询却得不到数据,90% 不是 SQL 写错,而是连接、选择库或结果读取环节断在中间。

  • 检查 mysqli_connect()PDO 构造是否成功,失败时要 var_dump($conn) 看是不是 false 或抛异常
  • 确认当前连接已选中目标数据库mysqli_select_db() 返回 true 才算生效
  • mysqli_num_rows($result)$stmt->rowCount() 先看有没有记录,再决定进不进 while 循环

为什么不要用 mysql_* 函数(已废弃)

mysql_connect()mysql_query() 在 PHP 7.0+ 已被彻底移除,不是“不推荐”,是运行就报 Fatal Error: Uncaught Error: Call to undefined function mysql_connect()。现在只有两条路:mysqli 或 PDO。

立即学习PHP免费学习笔记(深入)”;

  • mysqli 支持面向过程和面向对象两种风格,新手用过程式更直观
  • PDO 统一接口,换数据库只需改 DSN,适合后期可能迁移场景
  • 二者都支持预处理防注入,但无条件查询时不用硬套,别为安全牺牲可读性

实际写的时候,先连上、再查、再取,三步缺一不可。最容易卡住的是以为 mysqli_query() 返回的就是数组——它只是个句柄,得靠 fetch 系列函数“掰开”才行。

text=ZqhQzanResources