用php通过选择列表显示表格数据

用php通过选择列表显示表格数据,php,Php,我有一个选择列表,其中包含表中的列名。单击submit按钮时,将显示一个带有列名的表,但它不会显示表中的数据,而是重复选择列表的值。例如,如果选择了teamname。它显示“teamname”4次,因为我的表中有4行,但我希望它显示实际的teamname,而不是单词“teamname;” 我相信这与我的变量$select有关,与我在sql语句中如何使用它有关,或者与我如何将它定义为变量有关 它使用的是选择列表中的值,而不是表列中的值 注意:为此使用PDO方法 HTML <f

我有一个选择列表,其中包含表中的列名。单击submit按钮时,将显示一个带有列名的表,但它不会显示表中的数据,而是重复选择列表的值。例如,如果选择了teamname。它显示“teamname”4次,因为我的表中有4行,但我希望它显示实际的teamname,而不是单词“teamname;”

我相信这与我的变量$select有关,与我在sql语句中如何使用它有关,或者与我如何将它定义为变量有关

它使用的是选择列表中的值,而不是表列中的值

注意:为此使用PDO方法

HTML

        <form method='post' action='phpfiles/selectList.php'>
            <select name='select'>
                <option value='teamname' id='team'>teamname</option>
                <option value='city' id='city'>city</option>
                <option value='best' id='best'>bestplayer</option>
                <option value='year' id='year'>year</option>
                <option value='website' id='website'>website</option>
            </select>
            <br>
            <input type='submit' id='selectSubmit' value='Submit Data'>
        </form>

团队名称
城市
最佳选手
年
网站

PHP

<?php

    $select = $_POST['select'];

    echo "<table style='border: solid 1px black;'>";
    echo "<tr><th>'$select'</th></tr>";

    class TableRows extends RecursiveIteratorIterator { 
        function __construct($it) { 
            parent::__construct($it, self::LEAVES_ONLY); 
        }

        function current() {
            return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
        }

        function beginChildren() { 
            echo "<tr>"; 
        } 

        function endChildren() { 
            echo "</tr>" . "\n";
        } 
    } 

    if ($_SERVER["REQUEST_METHOD"] == "POST"){  

        // server and database information
       $servername = "localhost";
       $username = "";
       $password = "";
       $dbname = "";
       $select = $_POST['select'];

        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $stmt = $conn->prepare("SELECT '$select' FROM teams"); 
            $stmt->execute();

            // set the resulting array to associative
            $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
            foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { 
                echo $v;
            }
        }
        catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }
        $conn = null;
        echo "</table>";
    }    
?>

不要使用
引号:

$stmt = $conn->prepare("SELECT $select FROM teams");
或者更好地使用“`”来引用:

$stmt = $conn->prepare("SELECT `$select` FROM teams");

将其标记为sql查询输出的简单字符串,而不是列名(您想要的)。

不要使用
引号:

$stmt = $conn->prepare("SELECT $select FROM teams");
或者更好地使用“`”来引用:

$stmt = $conn->prepare("SELECT `$select` FROM teams");
将其标记为一个简单字符串,用于sql查询的输出,而不是列名(您想要的)