我正在尝试解析任何选定的 mysql 表的单行的所有列字段和数据。
这背后的原因是为任何给定的单行创建一个类似“通用”的表解析器。
例如,我有这个表“tbl1”:
+----+---------------------+---------+---------+--+
| id | date | amounta | amountb | |
+----+---------------------+---------+---------+--+
| 1 | 2014-02-28 05:58:41 | 148 | 220 | |
+----+---------------------+---------+---------+--+
| 2 | 2014-01-20 05:58:41 | 50 | 285 | |
+----+---------------------+---------+---------+--+
| 3 | 2014-03-30 05:58:41 | 501 | 582 | |
+----+---------------------+---------+---------+--+
并且我希望能够选择表tbl1和id = 1导出到:
<label>id <input type="text" value="1"/></label>
<label>date <input type="text" value="2014-02-28 05:58:41"/></label>
<label>amounta <input type="text" value="148"/></label>
<label>amountb <input type="text" value="220"/></label>
这是我迄今为止所拥有的:
if ($_GET['p'] && $_GET['table']) {
include ("con.php");
$query = "SELECT * FROM `" . $_GET['table'] . "` WHERE id = '" . $_GET['p'] . "'";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$fields[] = $row['0'];
$p = $row;
}
$fields = array();
$res = mysql_query("SHOW COLUMNS FROM `" . $_GET['table'] . "`");
while ($x = mysql_fetch_assoc($res)) {
$fields[] = $x['Field'];
}
foreach($fields as $f) {
foreach($p as $obj) {
echo '<label>' . $f . ' <input type="text" value="' . $p[$f] . '"></label>';
};
}
mysql_close();
}
我确定问题出在 foreach 循环之间。我知道这是完全错误的,但我不太确定如何解决这个问题。
基本上,想法是从 $_GET['table'] 中选择所有列名称,并为每个列名称查找其值,其中 id = $_GET['p']强>;
最佳答案
if $p
是一个单级数组,如
Array (
'field1' => 'value1',
'field2' => 'value2',
...
)
和$fields
是一个像这样的数组
Array (
0 => 'field1',
1 => 'field2',
...
)
那么这应该可以工作
foreach($fields as $f) {
echo '<label>' . $f . ' <input type="text" value="' . $p[$f] . '"></label>';
}
关于PHP MySQL : Display all column names from a given table and the values for any single given row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22320439/