簡體   English   中英

進行PHP MySql搜索

[英]Making a PHP MySql search

我正在我的應用程序中執行搜索功能,我具有用戶名,名稱和地區,因此任何人都可以告訴我實現此功能的最佳方法。 就像用戶在搜索中輸入的內容一樣,腳本應搜索數據庫並獲取所需的詳細信息。 //我的代碼在這里

<?php
include_once("db.php");
if(isset($_POST['district'])){
    $district=$_POST['district'];
}
if(isset($_POST['designation'])){
    $design=$_POST['designation'];
}
if(isset($_POST['name'])){
    $name=$_POST['name'];
}
if(isset($_POST['department'])){
    $dept=$_POST['department'];
}
$result=array();
$response=array();
if((isset($design)) &&(!isset($district)) && (!isset($name)))
{
    $a=$design;
    $stmt=$db->prepare("SELECT * FROM search WHERE designation LIKE ?");
    $stmt->bind_param("s",$a);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;
}
}
else if((isset($district)) &&(!isset($design)) && (!isset($name)))
{
    $a=$district;
    $stmt=$db->prepare("SELECT * FROM search WHERE district LIKE ?");
    $stmt->bind_param("s",$a);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;

    }
}
else if((isset($name)) &&(!isset($district)) && (!isset($district))){
    $a=$name;
    $stmt=$db->prepare("SELECT * FROM search WHERE name LIKE ?");
    $stmt->bind_param("s",$a);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;

    }
}
if((isset($name))&& (isset($design))){
    $stmt=$db->prepare("SELECT * FROM search WHERE name LIKE ? AND designation LIKE ?");
    $stmt->bind_param("ss",$name,$design);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;
    }
}
if(isset($dept)){
    $stmt=$db->prepare("SELECT * FROM search WHERE department LIKE ?");
    $stmt->bind_param("s",$dept);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;

    }
}
$response['result']=$result;
echo json_encode($response)
?>

以上是完整代碼。

利用ajax請求。 並且您的MySql查詢應為:

select * from user where uname like %username% or designation like %designation% or district like %district%

不要忘記使用參數化查詢。

希望能有所幫助。

試試這個..我不願意執行它。

`$query='SELECT * FROM search WHERE ';
$stmt;
if(isset($_POST['district'])){
    $query+='district like @district '
    $stmt=$db->prepare($query);
    $stmt->bind_param(@district,$_POST['district']);

}
if(isset($_POST['designation'])){
    if(strlen($query>27))// district is set
    {
        $query+=' AND ';
    }
   $query+='district like @designation'
    $stmt=$db->prepare($query);
    $stmt->bind_param(@designation,$_POST['designation']);
}
if(isset($_POST['name'])){
    if(strlen($query>27))// district/design  is set
    {
        $query+=' AND ';
    }
    $query+='district like @name'
    $stmt=$db->prepare($query);
    $stmt->bind_param(@name,$_POST['name']);
}
if(isset($_POST['department'])){
  if(strlen($query>27))// district/design/dept  is set
    {
        $query+=' AND ';
    }
    $query+='district like @department'
    $stmt=$db->prepare($query);
    $stmt->bind_param(@department,$_POST['department']);
}
$result=array();
$d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;
    }`

首先,您需要更改!emptyempty而不是isset!isset因為您將變量設置在頂部,因此它將始終被設置並且將處於每種情況,因此我將其更改為空,如圖所示在下面的代碼中。

之后,您可以使用滿足條件的參數創建一個數組,最后我在SQL中實現了該功能,並使用join綁定了參數,希望它對您有用。

<?php
include_once("db.php");



$result=array();
$response=array();

if(isset($_POST['keyword']) && !empty($_POST['keyword']))
{
    $keyword = $_POST['keyword'];
    $sql = "SELECT * FROM search WHERE CONCAT(designation,' ', district, ' ', department, ' ',name) LIKE ?";

    $stmt=$db->prepare($sql);
    $key = "%".$keyword."%";
    $stmt->bind_param("s",$key);
    $stmt->execute();
    $d=$stmt->get_result();
    while($b=$d->fetch_array(MYSQLI_ASSOC)){
        $result[]=$b;
    }
    $response['result']=$result;
    echo json_encode($response);
} else {
    echo json_encode(array("message"=>"Keyword is not defined"));
}

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM