[英]Filter SQL select query using ajax
我想使用選擇下拉菜單和輸入標記來使用PHP過濾SQL查詢的SELECT結果。 用戶可以選擇<,=,>然后輸入要過濾的數字。
我收到這些警告和失敗:
注意:嘗試在url中獲取非對象的屬性
致命錯誤:在url中調用boolean上的成員函數bind_param()
這是使用“WHERE c.level?”的有效方法嗎?
我也嘗試在選項開始和結束標記之間使用HTML數字代碼而不是<,=或>但我得到相同的錯誤。
這是我的表格:
<form method="post" action="filterChar.php" id="char_filter">
<fieldset>
Level is
<select name="expression">
<option value="<"> < </option>
<option value="="> = </option>
<option value=">"> > </option>
</select>
<input type="number" name="limit">
<input type="submit" name="char_filter">
</fieldset>
</form>
jQuery ajax調用:
$('#char_filter').submit(function() {
$.ajax({
url: 'filterChar.php',
type: "POST",
dataType: { expression: $(this).expression.value,
limit: $(this).limit.value}
});
});
PHP處理程序:
if(!($stmt = $mysqli->prepare("SELECT c.id, c.name, r.name, cl.name, c.level FROM dnd_character c INNER JOIN dnd_race r ON c.race = r.id INNER JOIN dnd_class cl ON c.class = cl.id WHERE c.level ? ?"))) {
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error;
}
if(!($stmt->bind_param('si',$_POST['expression'],$_POST['limit']))) {
echo "bind_param failed: " . $stmt->errno . " " . $stmt->error;
}
if(!($stmt->execute())) {
echo "Execute failed: " . $stmt->errno . " " . $stmt->error;
}
`
發現了一些錯誤,所以這里是固定的JS部分:
$('#char_filter').submit(function() {
var form = $(this).get()[0];
var data = {
expression: form.expression.value,
limit: form.limit.value
};
$.ajax({
url: 'filterChar.php',
type: "POST",
data: data
});
});
或者你可以使用data: $(this).serialize()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.