这是表^^
我可以通过在所有搜索框中输入所有值来过滤数据.
我使用的查询是:
SELECT * FROM `student` WHERE `cpi` >= '$valueToSearch' AND `sem` = '$valueToSearch2' AND `choice` = '$valueToSearch3';
Run Code Online (Sandbox Code Playgroud)
但是,当我不在所有搜索框中输入值时,(使用单个过滤器搜索)表不返回任何内容.
我使用了OR关键字,但它也没有帮助:
SELECT * FROM `student` WHERE `cpi` >= '$valueToSearch' OR `sem` = '$valueToSearch2' OR `choice` = '$valueToSearch3';
Run Code Online (Sandbox Code Playgroud)
您希望以仅放入有过滤器的子句的方式构建查询.如果您不想按学期过滤,则不应在查询中提供.
如果您正在使用Laravel或类似的框架,它应该有一个查询生成器,这对于这样的事情非常有用.如果没有,您可以尝试以下版本:
// Init empty array for clauses
$clauses = [];
// Set cpi clause, if any
if ( isset($valueToSearch) ) {
$clauses[] = "cpi >= $valueToSearch";
}
// Set semester clause, if any
if ( isset($valueToSearch2) ) {
$clauses[] = "sem = $valueToSearch2";
}
// Set choice clause, if any
if ( isset($valueToSearch3) ) {
$clauses[] = "choice = $valueToSearch3";
}
// Guard against empty $clauses array
if ( ! empty($clauses) ) {
$query = "SELECT * FROM `student` WHERE " . implode( ' AND ', $clauses ) . ";";
}
else {
// Handle empty $clauses array
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1282 次 |
| 最近记录: |