0
私は自分のデータベースに少し "検索エンジン"を作りたいと思っていました。 私のjavascriptは次のとおりです。WHEREの条件としてajaxとPDO変数
$(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>";
を持っていますできます。今私はポストとparamとそれを取得するときに動作しません。 connection.phpは条件と連動しているため正しいです。
私はそれをSQLSの注射を保護する方法を知っているが、なぜ文が次のように働いていないのか:waar where whereと:postnameは値 としてwaar = nameとpostname testがWHERE name = "test "これは動作するはずです –
@emielpopelierこれは仕様です。私が知っているように、それは主に、SQLエンジンが準備時にテーブル名やカラム名が不明なときには何も準備できないためです:どのインデックスを使用するのか、クエリの最適化の仕方などはわかりませんそれで、本当に準備することは何もありません。 SQLインジェクションセキュリティは、その優れた副作用です。 – jeroen
私は、準備にクエリを変更しようとしましたが、いずれの結果も得られませんでした。準備の代わりに何か他のものがありますか? –