如何一次搜索多个关键字? [关闭]

问题描述 投票:1回答:1

从我的编码我可以搜索一个关键字。我可以通过护照或捐赠日期进行搜索。但如果我想两者都搜索那么我应该修改什么。提前致谢。

if (isset($_GET['q'])) {
  $q = $_GET['q'];
  $statement = $db->prepare("select * from donate where passport_IC like :passport_IC or donation_date like :donation_date ORDER BY `donation_date` DESC
");
  $statement->execute([
    ':passport_IC' => '%' . $q .'%',
    ':donation_date' => '%' . $q .'%'
  ]);
} else {
  $statement = $db->prepare('SELECT * from donate');
  $statement->execute();
}
$people = $statement->fetchAll(PDO::FETCH_OBJ);
?>
 <?php foreach($people as $person): ?>
     <tr>
        <td><?php echo $person->passport_IC; ?></td>
        <td><?php echo $person->donation_date; ?></td>
     </tr>
 <?php endforeach; ?>
php mysql
1个回答
0
投票

根据我的想法,你可以试试这个

$passport_IC = '';
$donation_date = '';
$condition = " ORDER BY `donation_date` DESC";

if(!empty($passport_IC) && !empty($donation_date)){
    $condition = " WHERE passport_IC LIKE '%$passport_IC%' OR 
           donation_date LIKE '%$donation_date%' ORDER BY `donation_date` DESC";
}elseif(empty($passport_IC) && !empty($donation_date)){
    $condition = " WHERE passport_IC LIKE '%$donation_date%' OR 
           donation_date LIKE '%$donation_date%' ORDER BY `donation_date` DESC";
}else{
    $condition = " WHERE passport_IC LIKE '%$passport_IC%' OR 
           donation_date LIKE '%$passport_IC%' ORDER BY `donation_date` DESC";
}
$sql = "SELECT * FROM donate ".$condition;

要么

if(!empty($passport_IC) && !empty($donation_date)){
    $condition = " WHERE passport_IC LIKE '%$passport_IC%') OR (donation_date LIKE '%$donation_date%' ORDER BY `donation_date` DESC";
}elseif(empty($passport_IC) && !empty($donation_date)){
    $condition = " WHERE donation_date LIKE '%$donation_date%' ORDER BY `donation_date` DESC";
}else{
    $condition = " WHERE donation_date LIKE '%$passport_IC%' ORDER BY `donation_date` DESC";
}
$sql = "SELECT * FROM donate ".$condition;

将其格式化以支持预准备语句。

© www.soinside.com 2019 - 2024. All rights reserved.