【问题标题】:Is it possible to loop through each row of a table in a database是否可以遍历数据库中表的每一行
【发布时间】:2019-02-19 17:57:43
【问题描述】:

我正在尝试遍历数据库中表的每一行,然后在特定行上获取特定列的值。这可能吗?我已经做了几个谷歌搜索,但没有什么真正具体的。我尝试使用 mysqli_fetch_array() 函数,但是当我这样做时,我得到了列的结果。我想针对每一行。到目前为止,我拥有的代码使我成为“nid”列。那不是我想要的。我想遍历每一行。

<?php

    $serverName = "localhost";
    $username = "user1";
    $password = "sp@99#1";
    $databaseName = "developer_site";

    // Connection
    $connection = new mysqli($serverName, $username, $password, $databaseName);

    // Check Connection
    if ($connection->connect_error) {
      die("Connection failed:" . $connection->connect_error);
    } // line ends if statement

    $queryNodeRevision = "SELECT nid FROM node_revision";
    // line above creates variable $queryNodeRevision > selects column "nid" from table "node_revision"

    $results = mysqli_query($connection, $queryNodeRevision) or die("Bad Query: $results");

    while ($row = mysqli_fetch_array($results)) {
          echo "NID: ";
          echo $row['nid'];
          echo "<br/>";
    } 
  ?>

【问题讨论】:

  • 注意:mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程接口是 PHP 4 时代的产物,当时引入了 mysqli API,理想情况下不应在新代码中使用。
  • 请记住,the mysqli documentation 充满了例子。
  • 我认为您需要查看 SQL 手册,特别是 WHERE 子句。像顺序文件一样遍历数据库表是不正常的......因为它们不是
  • 当你在那里的时候也检查一下 SELECT !您一次可以选择多个列,即SELECT nid,nad,nod FROM node_revision WHERE nad = 'somevalue',然后您只会获得您真正想要查看的行和您想要了解的列
  • 您尝试完成的任务使用了错误的工具。如果您正确询问,任何 SQL 引擎都可以为您提供所需的记录。当查询本身可以更有效地过滤查询结果时,不应使用外部代码来过滤查询结果。

标签: php mysql sql loops


【解决方案1】:

您可以仅使用 SQL 查询按特定条件选择行,也可以选择所有列。 SELECT * FROM node_revision where condition;

condition 可以是任何东西。例如 another_row = 'something'。

但是,如果出于某种原因,您需要在 php 脚本中处理 nid 以了解该行是否是您正在搜索的“特定”行,那么您只需选择所有列,或者您选择的那些需要。

$queryNodeRevision = "SELECT nid, col1, col2 FROM node_revision";

$results = mysqli_query($connection, $queryNodeRevision) or die("Bad Query: $results");

while ($row = mysqli_fetch_array($results)) {
    if (condiiton) {
        echo "Particular: ".$row['nid']
        ." ".$row['col1']
        ." ".$row['col2'];
    }
}

condition 可能类似于 $row['nid'] == 123

希望对你有帮助。

【讨论】:

  • 因此,如果我想逐个选择所有行,我会将 SELECT * FROM node_revision where $rows;
  • SELECT * from node_revision; 将选择所有行和列并将它们放入$results 对象中。在您的 while 循环中,您每次都会选择一行,做一些事情并回显它。这是非常基本的东西。您应该阅读 PHP 和 MySQL 文档。如果您需要以某种方式“完成这项工作”,请详细说明您想要实现的目标。
猜你喜欢
  • 2016-12-30
  • 2018-11-22
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多