MySQL查询更新取决于$ _POST值

时间:2015-04-29 09:09:50

标签: php mysqli

根据用户$ _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”然后制作大量查询案例将是愚蠢的。 我希望你能理解我的问题,并能帮助解决它,因为它很难解释它。

2 个答案:

答案 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);