-3

好的,所以我有一个搜索代码,可以查看两个表。我知道歧义来自两个表(名为磁盘轨道的表)中都有一个“标题”列。

现在我的解决方法是这个。

$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 不存在(当我只搜索其中一个表时,它可以找到 Title)

有任何想法吗?

4

2 回答 2

2

运行$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%'
)
于 2013-05-11T23:38:32.033 回答
0
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

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

于 2013-05-11T23:38:16.507 回答