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

标签 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() ."";
        }
      }
    }

最佳答案

不通过参数绑定(bind)。

知道列名称后,您必须验证输入是否与白名单匹配,这样就不会出现错误,更重要的是 - 它是安全的。

例如:

$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'";

关于php - 是否可以从输入类型的结果中选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133901/

相关文章:

php - 关于如何简化此代码的任何建议?

php - TYPO3 TCA 值作为 Fluid 上的变量

html - div 的文本和边框之间的空格,为什么?

javascript - 如何获得(非常)短的 .mp3 音频文件以在每次击键时播放?

html - 如何将 Glyphicon 放入输入标签中?

php - Mysql插入大数据

php - codeigniter 返回从 Controller 获取数据以通过 Ajax 请求查看

javascript - foreach() 触发 'Uncaught RangeError: Maximum call stack size exceeded'

python - 如何在python中执行sql时使用字符串

MySQL 特化/泛化问题