PHP MySQL:显示给定表中的所有列名以及任意给定行的值
我正在尝试解析任何选定mysql表的一行的所有列字段和数据 这背后的原因是为任何给定的单行创建一个“通用”的表解析器 例如,我有这个表“tbl1”: 我希望能够选择表tbl1和id=1导出到: 这就是我迄今为止所做的:PHP MySQL:显示给定表中的所有列名以及任意给定行的值,php,mysql,sql,Php,Mysql,Sql,我正在尝试解析任何选定mysql表的一行的所有列字段和数据 这背后的原因是为任何给定的单行创建一个“通用”的表解析器 例如,我有这个表“tbl1”: 我希望能够选择表tbl1和id=1导出到: 这就是我迄今为止所做的: if ($_GET['p'] && $_GET['table']) { include ("con.php"); $query = "SELECT * FROM `" . $_GET['table'] . "` WHERE id = '" . $
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循环之间。我知道这是完全错误的,但我不太确定如何解决这个问题
基本上,这个想法是从$\u GET['table']中选择所有列名,并为每个列名找到其值,其中id=$\u GET['p'] 使用
通过这种方式,您可以获得所有字段名,适用于任何类型的查询,而不只是选择*,如果$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>';
}
您正在从查询中获取数据吗?什么是印刷场?小心。您的代码易受mysql注入攻击。确保转义输入并使用未弃用的库。像mysqli_*或PDO@Tobias是本地的。没有internet连接正在进行。感谢you@MuhammadZeeshan我同时从$fields和$p获取数据。您是否已将$p声明为数组$p=$row将为您提供结果集中的最后一个结果,如果有多个结果,我知道这可能是答案,但我不知道应该在哪里以及替换什么。我需要为每个人做些什么吗?我正处于PHP的早期阶段。谢谢,我给了你创建$fields数组的方法。获取您为获取$fields而编写的代码,并将其替换为以下内容。令人惊讶的是,它会起作用的!
Array (
'field1' => 'value1',
'field2' => 'value2',
...
)
Array (
0 => 'field1',
1 => 'field2',
...
)
foreach($fields as $f) {
echo '<label>' . $f . ' <input type="text" value="' . $p[$f] . '"></label>';
}