如何在PHP、MYSQL中使用select标记选项来搜索id、电子邮件、用户名?

如何在PHP、MYSQL中使用select标记选项来搜索id、电子邮件、用户名?,php,jquery,mysql,ajax,search,Php,Jquery,Mysql,Ajax,Search,您好,我正在尝试使用带有ID、Email和Fullname选项的select标记获取搜索方法 我有以下用于搜索的html代码: <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post"> <select class="searchoptionuser" name="Search" id="searchbyuser"> <option value=""

您好,我正在尝试使用带有ID、Email和Fullname选项的select标记获取搜索方法

我有以下用于搜索的html代码:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
<select class="searchoptionuser" name="Search" id="searchbyuser">
<option value="" disabled selected value>Search User</option>
<option value="ID">ID</option>
<option value="Email">Email</option>
<option value="Fullname">Fullname</option>
</select>
<input type="text" name="search" placeholder="Search..." id="search_text" class="searchtext">
<input type="submit" name="submit" value="Search">
</form>
当我选择ID时,我想过滤搜索,搜索将只按ID搜索,也按电子邮件和全名搜索

我在PHP中尝试过:

<?php
include "includes/connection.php";

if ($_SERVER["REQUEST_METHOD"] == "POST") {

if(isset($_POST['Search']) == "ID")
{
// query code here from database
alert(1);

} else if(isset($_POST['Search']) == "Email") {
// query code here from database

} else if(isset($_POST['Search']) == "Fullname") {
// query code here from database
$output = "";
$sql = "SELECT * FROM user WHERE firstname LIKE '%".$_POST["search"]."%' or lastname LIKE '%".$_POST["search"]."%'";
$result = mysqli_query($connection, $sql);

if (mysqli_num_rows($result) > 0) {
$output .= "<tr><th>User ID</th><th>Email</th><th>Fullname</th><th>Phone Number</th></tr>";
// output data of each row
while($row = mysqli_fetch_array($result)) {
$output .= "<tr>
<td>" .$row["id"]. "</td><td>" .$row["email"]. "</td><td>" .$row["lastname"]. ", " .$row["firstname"]. "</td><td>" .$row["phonenumber"]. "</td>
</tr>";
}
echo $output;
} else {
echo "No account found.";
}
}
}

?>

但它似乎不起作用。。这在php中是否可行,或者此方法仅适用于javascript或jquery。请帮助任何人。谢谢

您可以根据从$\u POST获得的数据创建条件查询

$query = "";

if($_POST['Search'] == "ID")
{
  $query .= "AND firstname LIKE '%".$_POST["search"]."%' or lastname LIKE '%".$_POST["Search"]."%'"";
} else if($_POST['Search'] == "Email") {
  $query .= "AND email LIKE '%".$_POST["Search"]."%'";
} else if($_POST['Search'] == "Fullname") {
  $query .= "AND ID = ".$_POST["Search"];
 }

$sql = "SELECT * FROM user WHERE 1=1 ".$query ;

请忽略语法错误(如果有),因为我没有测试代码,但它会告诉您如何实现它。

您可以从调查发布内容开始:print\u r$\u POST;出口然后你应该删除alert1——这不是php代码。我在这里看到了几个错误,首先你有两个表单元素,它们具有相同的名称搜索,这将导致只有一个元素被传递到php脚本,然后在你的ifs中使用ifisset$\u POST['search']==Fullname,如果$\u POST['search']==Fullname,你应该在这里使用。最后,您的代码容易受到sql注入的攻击,您应该使用准备好的语句