【问题标题】:set variable to field name of sql query将变量设置为sql查询的字段名
【发布时间】:2012-12-26 09:16:39
【问题描述】:

我的目标是为 mysql 查询中的字段名称设置一个变量。下面是一些伪代码

1.    $query = "SELECT firstName, lastName FROM users WHERE userName = 'mhopkins321';"
2.    $result = mysql_query($result);
3.    $while($row = mysql_fetch_assoc($result)){
4.         $column1 = name_of_column($row['firstName']);
5.    }
6.    echo $column1

      //Would return the string

      firstName

显然第 4 行是真正的伪部分

【问题讨论】:

  • 也许我错了......但 column1 不是“firstName”吗?为什么当您将其静态键入数组时动态抓取它。您只想获取表的所有列名吗? (因为你使用的是 mysql...php.net/manual/en/function.mysql-list-fields.php
  • 是的,我有点难以解释。我要么需要有两个变量,一个是行的值,一个是字段名;或者是一个包含这两个数组的单个变量。 `$firstName = ['firstName','michael'];
  • 要么,要么我需要将变量的名称设置为不同变量中的字符串
  • 它看起来可能已经被贬低了,但是 SHOW COLUMNS 是一个 sql 函数。我可以尝试使用它来使其正常工作

标签: php mysql variables dynamic


【解决方案1】:

这就是你所追求的吗?

$query = "SELECT firstName, lastName FROM users WHERE userName = 'mhopkins321';"
$result = mysql_query($result);

$all_results = array();
$while($row = mysql_fetch_assoc($result)) {
     $formatted_row = array();
     foreach ( $row as $column => $value ) {
         $formatted_row[] = array($column, $value);
     }
     $all_results[] = $formatted_row;
}

或者只是在foreach 循环中随意使用$column$value

或者您是否特别想要第一列,可以使用reset($row); $first_key = key($row); 访问?

【讨论】:

    【解决方案2】:

    你想用列名来命名一个变量吗?

    $$row['firstName'] = $row['firstName'];
    

    另一种方式是这样的:

        $query = "SELECT firstName, lastName FROM users WHERE userName = 'mhopkins321'";
        $result = mysql_query($result);
        $row = mysql_fetch_assoc($result);
    
        foreach($r as $key=>$value){
            $$key = $value;
        }
    

    现在您可以通过列名来回显这些值。

    【讨论】:

      【解决方案3】:

      这听起来有些多余,但您始终可以使用 array_search:

      while($row = mysql_fetch_assoc($result)){
          $value = $row['firstName'];
          $key = array_search($value, $row);
      }
      

      array_search 上查看更多信息。

      【讨论】:

      • 我收到此错误Warning: array_search() expects parameter 2 to be array, resource given in /home/queryTest.php on line 8
      • 编辑了我的答案。结果不是我们应该搜索的数组;而$row 是我们所需要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      • 2020-01-23
      • 2023-03-02
      相关资源
      最近更新 更多