根据用户$ _POST值,我无法想出更新查询的好方法。基本上我有用户管理搜索按钮,站点管理员可以在其中搜索他的站点用户。在我的例子中:
<div id="website_user_management_search_left">
<div id="website_user_management_search_left_leftside">
<p>Name:</p>
<p>Surname:</p>
<p>Telephone:</p>
<p>Group:</p>
<p>Discount group:</p>
</div>
<div id="website_user_management_search_left_rightside">
<input type="text" name="#" value="#" id="userSearch_name">
<input type="text" name="#" value="#" id="userSearch_surname">
<input type="text" name="#" value="#">
<input type="text" name="#" value="#">
<input type="text" name="#" value="#">
<input type="submit" id="button_adminUserSearch" value="Search">
</div>
然后在按下“搜索”按钮后,AJAX发送请求以检索结果,但我该如何处理这个动态查询呢? 例如 - 如果用户只按“搜索”查询,则看起来像:
mysqli_query($dbconnect,"SELECT * FROM accounts");
例如 - 如果用户指定$ _POST [“name”]值,查询将如下所示:
mysqli_query($dbconnect,"SELECT * FROM accounts WHERE name='".$_POST["name"]."'");
问题是 - 我怎样才能有效地处理这种查询?检查哪些值是“isSet”然后制作大量查询案例将是愚蠢的。 我希望你能理解我的问题,并能帮助解决它,因为它很难解释它。
答案 0 :(得分:0)
也许你正在寻找类似的东西:
if(empty($_POST['name'])) {
$name = null;
} else $name = $_POST['name'];
然后在你的陈述中,你的情况将是:
WHERE (name=:name OR :name is null)
如果名称设置,它将搜索此名称,否则它将返回true并且查询不会受到影响
答案 1 :(得分:0)
你可以这样做:
mysqli_query($dbconnect,"SELECT * FROM accounts WHERE name LIKE'%".$_POST["name"]."%'");
但是有两个小问题:
您没有使用mysqli_escape_string()转义用户输入数据,并且:
你不应该这样做。如果设置了name
POST数据,则更好的方法是仅添加where子句:
$where = '';
if ($_POST['name']) {
$where = ' WHERE name = '".$name."'"';
}
mysqli_query($dbconnect,"SELECT * FROM accounts" . $where);