是否可以从输入类型的结果中选择列

时间:2017-05-23 11:44:03

标签: php html mysql select pdo

这可能吗?我希望能够只选择我在html表单中指定的列,但我不知道如何执行此操作。我已经搜索了很长一段时间,但却找不到符合我想法的东西。

非常感谢任何帮助。

echo "<select name='test'><option value='column1'>Column1</option></select>"
    echo "<input type='submit' name='grafiek' value='Maak grafiek'>";
    if(isset($_POST['checkvakje']) && $_POST['test'] && $_POST['grafiek']) {
      $tijd = $_POST['checkvakje'];

      foreach($tijd as $time) {
        try {
          $stmt = $pdo->prepare("SELECT [the column i selected] FROM statistieken WHERE tijd = :tijd AND poortid = :poort");
          $stmt->execute(array(":tijd" => $time, ":poort" => $poort));

          if($stmt->rowCount() > 0) {
            while($row = $stmt->fetch()) {
              echo "<tr>";
              echo "<td>".$row['column i selected']."</td>";
              echo "</tr>";
            }
          }
        }
        catch(PDOexception $e) {
          echo "Query ging fout: " . $e->getMessage() ."";
        }
      }
    }

2 个答案:

答案 0 :(得分:1)

不通过参数绑定。

了解列名称,您必须验证输入是否与白名单匹配,以便没有错误,更重要的是 - 它是安全的。

例如:

$allowedColumns = ['foo', 'bar', 'baz'];

if (in_array($_POST['column'], $allowedColumns, true)) {
    $column = $_POST['column'];
} else {
    // Error: Invalid input
}

$sql = "SELECT {$column} FROM dummy WHERE whatever = 'example'";

答案 1 :(得分:0)

选择所有列,然后在php端控制它,就像这样

> row.names(mydataframe)
[1] "S1"   "S1"   "S1"   "S1"  
[5] "S1"   "S1"   "S1"   "S1"
....
[469] "S7" "S8" "S8" "S8"

注意:使用用户数据作为列名看起来有很多安全问题