1
我想使用选择下拉菜单和输入标记来筛选使用PHP的SQL查询的SELECT结果。用户可以选择<,=,>然后输入一个数字进行过滤。使用ajax筛选SQL选择查询
我得到这些警告和失败:
注意:试图让非对象的财产网址
致命错误:调用一个成员函数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;
}
`
您需要将HTML文档中逃脱''<' and '>文本字符。 –
你为什么使用两个占位符。你的价值不只是一个价值吗? – Akintunde007
在您的ajax调用中,将'dataType'替换为'data'。一般来说,在对这类问题进行故障排除时,请独立排除ajax调用和PHP脚本的故障。 –