gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 07:07:34 24 4
gpt4 key购买 nike

所以我想为我的数据库制作一个小“搜索引擎”。我的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com