【问题标题】:How to query all fields in a row如何查询一行中的所有字段
【发布时间】:2012-10-14 07:48:35
【问题描述】:

我知道这很简单,但是我有一段时间没有使用PHP/MySQL了,我一直在阅读其他线程/php的网站,似乎无法得到它。

如何从 MySQL 表中查询一行并打印出所有包含数据的字段?我需要排除 NULL 字段,只将那些有数据的字段添加到 html 列表中。

为了澄清,我想在不指定字段名称的情况下显示字段数据,只是因为我有很多字段并且不知道哪些字段是否为 NULL。

【问题讨论】:

    标签: php mysql loops


    【解决方案1】:

    您所概述的内容需要 4 个基本步骤:

    1. 连接到数据库。
    2. 查询特定行。
    3. 从结果中删除空值。
    4. 创建 html。

    第 1 步是非常特定于环境的,因此我们可以安全地跳过这里。


    第 2 步 - SQL

    SELECT * from <tablename> WHERE <condition isolating single row>
    


    第 3 步 - PHP(假设 $query 代表执行的数据库查询)

    //convert the result to an array
    $result_array = mysql_fetch_array($query);
    
    //remove null values from the result array
    $result_array = array_filter($result_array, 'strlen');
    


    第 4 步 - PHP

    foreach ($result_array as $key => $value)
    {
        echo $value \n;
    }
    

    【讨论】:

    • 这正是我想要的,谢谢。但是,我收到一个错误。 “警告:array_filter() 期望参数 1 是数组,在第 121 行的 /home2/fragnetn/public_html/game2.php 中给出布尔值” 为什么它将 mysql_query 的返回值读取为布尔值?
    • 我猜您的 SQL 格式错误/失败,或者您忘记将响应转换为数组 -- $result_array = mysql_fetch_array($query); -- 在调用 array_filter() 之前。
    • 是的,我意识到我的查询被传递了一个值,用于我尚未实际设置值的 WHERE。这现在工作正常,虽然我得到每个字段的重复项。 foreach 是否每个循环两次,一次用于键,一次用于值或其他什么?
    • 没关系,通过执行“mysql_fetch_array($query, MYSQL_ASSOC);”对其进行排序
    【解决方案2】:

    只需SELECT * FROM table_name WHERE.... 即可。

    要从特定字段中获取数据,应该是SELECT field_1,field_2,field_3....

    【讨论】:

    • 我很抱歉,我遇到的问题是我有 20 个字段,所以我不想指定每个字段的名称,我只想遍历所有提取字段数据的每个字段't null,而不是按名称指定。
    【解决方案3】:

    你必须创建一个代表 mysql 查询的字符串。然后在php中有一个名为mysql_query()的函数。使用上述字符串作为参数调用此函数。它将返回所有结果。 Here are some examples

    【讨论】:

      【解决方案4】:

      你需要这样做......

      首先连接到你的 sql...Reference

      现在进行查询并将其分配给变量...

      $query = mysqli_query($connect, "SELECT column_name1, column_name2 FROM tablename");
      

      如果要检索单行,请使用 LIMIT 1

      $query = mysqli_query($connect, "SELECT column_name1, column_name2 FROM tablename LIMIT 1");
      

      如果您想获取所有列,只需使用 * 而不是列名,如果您想保留特定列数据为 blank 的某些行,您可以这样做

      $query = mysqli_query($connect, "SELECT * FROM tablename WHERE column_name4 !=''");

      现在从中取出数组并像这样循环遍历数组..

      while($show_rows = mysqli_fetch_array($query)) {
         echo $show_rows['column_name1'];
         echo $show_rows['column_name2'];
      }
      

      如果您不想在 while 循环中包含列名,您可以这样做:

      while($show_rows = mysqli_fetch_array($query)) {
         foreach( $show_rows as $key => $val )
         {
             echo $show_rows[$key];
         }
      }
      

      【讨论】:

      • 谢谢,但是如何在没有列名的情况下在while循环中回显?这就是我遇到的全部问题,但我认为我解释得不是很好:)
      • 你必须使用列名,因为它是array key name
      • 所以没有办法查询所有不为空的行字段,然后只显示它们例如“echo $field[X]”,其中X是每个字段的索引拉?
      • @BrettPowell 您需要使用列名,如果您将数据安排在不同的列中,这样您就可以适当地回显它,这很有用...
      • @coderabbi 你看到编辑过的问题了吗???你确实像我一样向他解释了整个过程
      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2017-09-17
      • 2021-11-14
      • 2013-08-29
      • 1970-01-01
      • 2018-08-17
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多