php - SQL 字符串与 if 语句的连接

标签 php mysql sql

我有一个简单的全文搜索查询,数据来自 HTML 表单输入。如果语句检查或者用 array_key_exists 填充了所有三个输入,然后连接所有字符串,但是如果有人没有填充第一个或第二个输入,那么我的查询 WHERE 部分是 WHERE AND contract = $var 所以在这种情况下 AND 是不需要的。我的问题的解决方案是什么,我该如何解决?当需要 AND 时,只需添加到查询字符串中,不需要时不添加。

    $sql = "SELECT 
                slug, 
                title, 
                company, 
                location, 
                email, 
                street, 
                city, 
                phone, 
                url, 
                description, 
                image, 
                created_at 
                FROM jobs
                WHERE ";

    array_key_exists('paieska', $segment) ? $sql .= "MATCH(title, description) AGAINST('".urldecode($segment['paieska'])."') " : '';
    array_key_exists('darbo-laikas', $segment) ? $sql .= "AND contract = '".$segment['darbo-laikas']."' " : '';
    array_key_exists('miestas', $segment) ? $sql .= "AND location = '".$segment['miestas']."'" : '';

最佳答案

最简单的解决方案是在原始 where 语句中添加一个 1(并且在您的第一个 $sql if 语句之前添加 AND)。这将始终为真,并将返回所有记录。

如果 darbo-laikas 存在,您的查询将是 ...FROM jobs WHERE 1 AND contract... 这将正常工作。

$sql = "SELECT 
            slug, 
            title, 
            company, 
            location, 
            email, 
            street, 
            city, 
            phone, 
            url, 
            description, 
            image, 
            created_at 
            FROM jobs
            WHERE 1 ";

array_key_exists('paieska', $segment) ? $sql .= "AND MATCH(title, description) AGAINST('".urldecode($segment['paieska'])."') " : '';
array_key_exists('darbo-laikas', $segment) ? $sql .= "AND contract = '".$segment['darbo-laikas']."' " : '';
array_key_exists('miestas', $segment) ? $sql .= "AND location = '".$segment['miestas']."'" : '';

关于php - SQL 字符串与 if 语句的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40126119/

相关文章:

php - 使用php从MySQL数据库下载word文档

php - 如何在 google+ 服务器端注册中创建防请求伪造状态 token

php - 如何使用 zip 命令行设置文件密码?

mysql - 这个神秘的 SQL 输出(使用 MariaDB)的原因是什么?

mysql - 任何人都可以纠正 sql 查询吗?

SQL Server 2008 物理服务器切换时打开主 key 错误

php - 在 PHP 中仅连接一次 MySQL

php - MySQL SELECT X(location) 返回意外的数字/格式

php mysql 包装器类 __destruct 方法无法关闭数据库

php - 如何用MySQL为utf-8编写php代码(显示中文),计算天数