mysql模糊列标题

问题描述:

好吧,所以我有一个搜索代码,看起来两个表。我知道这个含糊不清来自于这两个表中有一列“标题”(名为盘轨道的表)。mysql模糊列标题

现在我的修复是这样的。

$query="SELECT * FROM disc, track WHERE Artist LIKE '%$trimmed%' OR disc.Title LIKE 

'%$trimmed%' OR Year LIKE '%$trimmed%' OR Genre LIKE '%$trimmed%' LIMIT 0, 30"; 

Notice: Undefined index: disc.Title in C:\xampp\htdocs\search.php on line 61 

我一直在寻找无处不在,无论我走到哪里都说那代码是正确的。但每当我跑过搜索它说disc.Title不存在(当我只搜索其中一个表,它可以找到标题)

任何想法?

+0

一个想法是你可能需要重复LIKE语句。你能否包括具体的错误? – 2013-05-11 23:33:21

+2

您的SQL服务器可能配置为使用区分大小写的列名称。 – Rob 2013-05-11 23:37:20

+0

艺术家如何跟踪? – Strawberry 2013-05-11 23:37:40

SELECT d.*, t.* FROM disc d, track t WHERE t.Artist LIKE '%$trimmed%' OR d.Title LIKE '%$trimmed%' OR Year LIKE '%$trimmed%' OR t.Genre LIKE '%$trimmed%' LIMIT 0, 30 

您应该为所有连接和选择项目使用表格信息/前缀。

+0

只是给了我更多的错误。表前缀不起作用。 – user2373944 2013-05-11 23:47:51

运行$query="SELECT * FROM disc, track WHERE Artist LIKE '%$trimmed%'"它工作吗?

这是OR disc.Title在那扔掉你。

您需要填写disk.Title表达式。 OR disc.Title LIKE '%$trimmed%'

就运行SQL而言,您应该明确编写您的连接。

SELECT * 
FROM disc 
INNER JOIN track 
    ON disk.id = track.disk_id 
WHERE (
    [disk or track?].Artist LIKE '%$trimmed%' 
    OR disc.Title LIKE '%$trimmed%' 
) 
+0

没有标题的查询工作。在我的问题中更新了全部内容。我不明白你的代码中的INNER JOIN,但是我实现了它,它不起作用。 – user2373944 2013-05-11 23:49:17

+0

运行'DESCRIBE磁盘;'并粘贴输出。请参阅:http://dev.mysql.com/doc/refman/5.0/en/explain.html – 2013-05-13 13:58:26