php - 如何选择所有条件为空的地方?

标签 php mysql sql

我有一个带有查询的 php 代码:

$query = "SELECT * FROM TDdb WHERE status = $status AND occupation =$occupation";

我正在将客户端应用程序的状态和职业值发送到此 php 代码。 当我同时发送身份和职业时,这有效。但如果我只发送状态而不发送职业(我的意思是无论职业是什么),我希望它返回行。

有人有什么建议吗? 我将不胜感激任何帮助。

PS:我想在没有 if 语句的情况下执行此操作,而只是更改查询

最佳答案

我个人会创建一个基本查询并在有条件的地方附加条件,如下所示:

$sql = 'SELECT * FROM TDdb';
$conditions = array();
$args = array();

if ($action) {
    $conditions[] = 'status = :status';
    $args[':status'] = $status;
}

if ($occupation) {
    $conditions[] = 'occupation = :occupation';
    $args[':occupation'] = $occupation;
}

if ($conditions) {
    $sql .= ' WHERE ' . join(' AND ', $conditions);
}

$stmt = $db->prepare($sql);
$stmt->execute($args);

关于php - 如何选择所有条件为空的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16061316/

相关文章:

php - 如何修复PHP中的“ header 已发送”错误

mysql - 如何同步 2 个 MySQL 数据库?

sql - T-SQL - 跟踪随时间发生的事件

php - 将 CSV 值插入数据库时​​,列计数与第 1 行错误的值计数不匹配

php - Laravel 5.4 artisan 为/public 中的现有文件夹提供 htaccess/和 Routes::get

php - 在数据库中插入选定的数据

mysql - 为什么我无法在运行时更改变量 long_query_time 变量

Mysql join 4个表可以在一个查询中完成吗

SQL选择直接删除

sql - Postgresql - 具有相关子查询的条件 SUM