我尝试获取表中列的值。首先,我想要获取表格。然后我确实喜欢:
$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> ';
}
答案 0 :(得分:1)
您有两种选择:
你使用了两个单独的查询,正如我在你对你的问题的评论中所解释的那样:一个用来获取你已经做过的表描述,另一个用来获取表内容(行)。您需要两个(实际上是三个)循环来迭代结果,大致如下:
你可以使用联合查询,尽管它有点难看,并没有真正简化你的代码结构:
SELECT'colname1'AS colname1,'colname2'AS colname2,'colname3'AS colname3 FROM table name
UNION
SELECT colname1,colname2,colname3 FROM table name
此单个查询连接两个包含的单独子查询的结果,因此它提供了您最初请求的内容。您只需确保在两个子查询中查询相同数量和类型的列。但请注意,这不是很好的风格,因为它很难调试并且难以维护。
一般来说,如果获取列名来输出它们是值得怀疑的,这确实是个好主意。我会三思而后行:您将存储架构和可视化结合到一个单层中,这是一个坏主意:当您以后必须进行更改时,您将遇到大问题。通常,这些不同方面应该保持分开,这是有充分理由的。