Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL:显示给定表中的所有列名以及任意给定行的值_Php_Mysql_Sql - Fatal编程技术网

PHP MySQL:显示给定表中的所有列名以及任意给定行的值

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 = '" . $

我正在尝试解析任何选定mysql表的一行的所有列字段和数据

这背后的原因是为任何给定的单行创建一个“通用”的表解析器

例如,我有这个表“tbl1”:

我希望能够选择表tbl1和id=1导出到:

这就是我迄今为止所做的:

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>';    
}