列名和值获取PDO

时间:2014-04-13 12:35:22

标签: php pdo foreach

我尝试获取表中列的值。首先,我想要获取表格。然后我确实喜欢:

$sql = $dbh->query("DESCRIBE `players` ;");
foreach ($sql->fetchAll(PDO::FETCH_NUM) as $k) {
    echo 'Table:'  . $k[0]. '<input type="text" values=""><br>  ' ;
}

那么现在最好的方法是为同一个foreach中的每个表获取价值?

解决方法我怎么说:

function getColumnValue($column,$name) {
        global $dbh;
        $sqll = ("SELECT `$column` FROM `players` WHERE `name`='$name' ");
        $sthh = $dbh->prepare($sqll);
        $sthh->execute();
        return $sthh->fetch(PDO::FETCH_ASSOC);
}


foreach ($sql->fetchAll(PDO::FETCH_NUM) as $k) {
    $test = getColumnValue($k[0],'Test');
    echo 'Table: '.$k[0] .' <input type="text" value="'.$test[$k[0]].'" style="color:#000;"> <br> ';
}

1 个答案:

答案 0 :(得分:1)

您有两种选择:

  1. 你使用了两个单独的查询,正如我在你对你的问题的评论中所解释的那样:一个用来获取你已经做过的表描述,另一个用来获取表内容(行)。您需要两个(实际上是三个)循环来迭代结果,大致如下:

    • 获取表描述(“DESCRIBE TABLE tablename”)
      • 遍历结果中的列
      • 输出单列名称
    • 获取表的内容(“SELECT * FROM tablename ...”)
      • 迭代结果中的行
      • 遍历每行内的列
        • 输出当前行和列的单元格内容
  2. 你可以使用联合查询,尽管它有点难看,并没有真正简化你的代码结构:

    SELECT'colname1'AS colname1,'colname2'AS colname2,'colname3'AS colname3 FROM table name

    UNION

    SELECT colname1,colname2,colname3 FROM table name

    此单个查询连接两个包含的单独子查询的结果,因此它提供了您最初请求的内容。您只需确保在两个子查询中查询相同数量和类型的列。但请注意,这不是很好的风格,因为它很难调试并且难以维护。

  3. 一般来说,如果获取列名来输出它们是值得怀疑的,这确实是个好主意。我会三思而后行:您将存储架构和可视化结合到一个单层中,这是一个坏主意:当您以后必须进行更改时,您将遇到大问题。通常,这些不同方面应该保持分开,这是有充分理由的。