javascript - ajax 和 PDO 变量作为 WHERE 的条件

标签 javascript php mysql ajax pdo

所以我想为我的数据库制作一个小“搜索引擎”。 我的 JavaScript 是:

 $(document).ready(function () {
     $("#display").click(function () {
         var zoeknaam = $("#zoeknaam").val();
         var zoektype = $("#zoektype").text();
         $.ajax({    //create an ajax request to load_page.php
             type: "POST",
             url: "display.php",
             data: { name: zoeknaam, zoekt: "name" },
             dataType: "html",   //expect html to be returned                
             success: function (response) {
                 $("#responsecontainer").html(response);
                 //alert(response);
             }

         });
     });
 });

我的html如下:

<input type="text" name="inputtext" id="zoeknaam" />
<select name="searchtype" id="zoektype"><option value="name">name</option><option value="age">age</option></select>
<input type="button" id="display" value="Display All Data" />

现在我有了我的 php

include("connection.php");
$dataget = $_POST["name"];
$datawaar = $_POST["zoekt"];
$stmt = $conn->prepare("SELECT * FROM student WHERE :waar=:postname");
$stmt->bindParam(':waar', $datawaar, PDO::PARAM_STR);
$stmt->bindParam(':postname', $dataget, PDO::PARAM_STR);
$stmt->execute();
echo "<table>";
while($data = $stmt->fetch(PDO::FETCH_ASSOC))
{   
    echo "<tr>";
    echo "<td align=center>$data[name]</td>";
    echo "<td align=center>$data[address]</td>";
    echo "<td align=center>$data[age]</td>";
    echo "</tr>";
}
echo "</table>";

当我删除 where 条件并设置条件来命名它时,它就起作用了。现在,当我用帖子和参数检索它时,它不起作用。 connection.php 是正确的,因为它适用于该条件。

最佳答案

这是错误的:

... WHERE :waar=:postname

您只能在准备好的语句中使用占位符绑定(bind)值,而不能使用列名或表名。

如果您想接受并使用客户端提供的列名或表名,确保这一点的唯一方法是根据白名单检查它们,然后将它们直接注入(inject)查询字符串中。

关于javascript - ajax 和 PDO 变量作为 WHERE 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41069432/

相关文章:

javascript - 如何使用 Javascript 中的字符串来验证两个单独的 JSON 字典中的数据?

php - 如何使用 CI 事件记录将数据插入带空格的字段名称?

php - 如何使用 eloquent 关系获取列数据

php - CDbConnection 和大括号

mysql - 用户名中的通配符

mysql - mysql IN 语句中的野生表达式

javascript - 单击 <a> 无法设置 location.href

javascript - 如何在 mootools(1.1) 中单击按钮获取元素的 ID

javascript - amp-script 未找到脚本哈希。 amp-脚本[脚本 ="hello-world"]

php - ClassNotFoundException : Attempted to load class. .. Symfony