php - 使用 LIKE 的 SQL 搜索查询

标签 php mysql sql codeigniter

我已经使用具有 LIKE 子句且两侧带有 % 通配符的查询实现了搜索。

我有一列包含国家/地区名称。如果我用 P 或 PAK 搜索,它会显示结果,但如果我用“我住在巴基斯坦”搜索,它不会进行比较。

我的理解是它与子字符串匹配。

是否可以反之亦然,就像我传递字符串“我住在巴基斯坦”一样,它与字段中的字符匹配并得到巴基斯坦的结果。

即时帮助将不胜感激。

最佳答案

您可以使用 codeigniter 框架中的 like() 函数。

$this->db->like();

此函数使您能够生成 LIKE 子句,这对于执行搜索很有用。

Note: All values passed to this function are escaped automatically.

简单的键/值方法: $this->db->like('标题', '匹配');

    // Produces: WHERE title LIKE '%match%'

如果您使用多个函数调用,它们将通过 AND 链接在一起:

    $this->db->like('title', 'match');
    $this->db->like('body', 'match');

    // WHERE title LIKE '%match%' AND body LIKE '%match%

如果要控制通配符 (%) 的放置位置,可以使用可选的第三个参数。您的选项有“之前”、“之后”和“两者”(这是默认值)。

    $this->db->like('title', 'match', 'before');
    // Produces: WHERE title LIKE '%match'

    $this->db->like('title', 'match', 'after');
    // Produces: WHERE title LIKE 'match%'

    $this->db->like('title', 'match', 'both');
    // Produces: WHERE title LIKE '%match%'

如果您不想使用通配符 (%),您可以将选项“none”传递给可选的第三个参数。

    $this->db->like('title', 'match', 'none');
    // Produces: WHERE title LIKE 'match' 

See This

我认为您需要的是搜索和比较所提供文本中的每个单词,我认为这会很有帮助。

$temp = array();
$str = array();
$str = explode(' ', $string);
foreach ( $str as $word) {
    if (strlen($word) > 2) {
        $this->db->or_like('country_name', $word, 'both');
    } else {
        continue;
    }
}
$countries = $this->db->get('countries');

i think in $countries you will have all the needed result.

关于php - 使用 LIKE 的 SQL 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34370638/

相关文章:

java - 我如何解决 PostgreSQL JDBC org.postgresql.util.PSQLException 错误 :

PHP json_encode html 元素包含不需要的空格

javascript - 如何基于Ajax请求打印JavaScript?

php - 是否为每个请求重建了整个 Zend Framework 堆栈?

javascript - 将一张表的id与另一张表的user_id匹配以获取mysql中的记录

sql - sqlite中的Where函数

mysql - 更新 MySQL 中的列

php - 通过 PHP 将 App Inventor 2 的文件上传到服务器

php - 根据列值更新不同表中的不同列

mysql - JOIN 上的重复结果