Php 跨不同MySQL列进行不区分大小写的搜索

Php 跨不同MySQL列进行不区分大小写的搜索,php,mysql,Php,Mysql,在我的网站上,我有一个搜索集成。我尝试了全文搜索,但它并不像我希望的那样不区分大小写。艺术家和歌曲在MySQL的不同栏目中 代码是: public function search($query, $page_num = 1, $cid=null) { if (empty($page_num)) $page_num = 1; $items = $this->db->get_results('SELECT added, store.id, categories.id AS

在我的网站上,我有一个搜索集成。我尝试了全文搜索,但它并不像我希望的那样不区分大小写。艺术家和歌曲在MySQL的不同栏目中

代码是:

public function search($query, $page_num = 1, $cid=null) {
    if (empty($page_num)) $page_num = 1;
    $items = $this->db->get_results('SELECT added, store.id, categories.id AS category_id, categories.name AS category_name, artist, song, file, size, youtube_url, downloads, hits
        FROM store LEFT JOIN categories ON (store.cid = categories.id)

        WHERE MATCH(artist, song, added) AGAINST ("+' . $this->db->escape($query) . '" IN BOOLEAN MODE)

        '. ($cid!==null ? ' AND store.cid = "'.intval($cid).'"' : '') .'
        ORDER BY added DESC
        LIMIT ' . ($page_num - 1) * SONGS_ON_PAGE . ', ' . SONGS_ON_PAGE, ARRAY_A);

您可以从如下查询中返回结果:

SELECT * FROM store
WHERE CONCAT(artist, song) LIKE '%<search>%'
从存储中选择*
其中CONCAT(艺术家、歌曲)如“%”

我忘了提到我是一个绝对的初学者,所以我不能像你所说的那样定制代码:(这永远不会起作用。首先,你连接艺术家和歌曲,没有任何分隔符(如空格)。第二,你没有考虑到用户可能先搜索歌曲,然后再搜索艺术家。pstephan1187你能帮我找到正确的方法吗?要搜索文本短语,你可能会发现MySQL中的“全文搜索”功能值得一看。它将返回结果,并可按与的相关性排序(即它们与一行的匹配程度).你正在运行哪个版本的MySQL?关于你在回答框中发布的材料,你现在可以将其编辑到问题中吗?谢谢!我的MySQL版本是4.0.10.6是否可以将我的代码更改为WHERE CONCAT…?不,这不是方法。试试。你的MySQL版本非常旧-建议你至少更新到5.5。