从我的编码我可以搜索一个关键字。我可以通过护照或捐赠日期进行搜索。但如果我想两者都搜索那么我应该修改什么。提前致谢。
码
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; ?>
根据我的想法,你可以试试这个
$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;
将其格式化以支持预准备语句。