Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP和MYSQL返回具有特定ID号的行?_Php_Mysql - Fatal编程技术网

使用PHP和MYSQL返回具有特定ID号的行?

使用PHP和MYSQL返回具有特定ID号的行?,php,mysql,Php,Mysql,我很难用SQL查询返回正确的行。我只想返回31或34作为其相册\u items.id的行。我想从结果中排除任何其他album_items.id。我关注的主线是: WHERE album_items.album IN (31,34) 无论出于何种原因,即使是没有album_items.id为31或34的行也会被返回。这是完整的查询。有没有可能我没有使用正确的语法 SELECT * FROM items_table RIGHT JOIN items_table ON items_table.

我很难用SQL查询返回正确的行。我只想返回31或34作为其相册\u items.id的行。我想从结果中排除任何其他album_items.id。我关注的主线是:

WHERE album_items.album IN (31,34) 
无论出于何种原因,即使是没有album_items.id为31或34的行也会被返回。这是完整的查询。有没有可能我没有使用正确的语法

SELECT * FROM items_table 
RIGHT JOIN items_table 
ON items_table.id=album_items.id 
WHERE album_items.album IN (31,34)
AND items_table.name LIKE '%{$term}%' 
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0'
谢谢你抽出时间,
莎拉

我认为这是操作顺序的问题

在sql中,您拥有

WHERE album_items.album IN (31,34)
AND items_table.name LIKE '%{$term}%' 
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0'
这被解释为

WHERE 
(album_items.album IN (31,34) AND items_table.name LIKE '%{$term}%')
OR
(items_table.description LIKE '%{$term}%' AND items_table.active != '0')
最有可能的情况是,第二种情况导致了额外的行。您需要在适当的地方包含括号

SELECT * FROM items_table 
RIGHT JOIN album_items 
ON items_table.id=album_items.id 
WHERE album_items.album IN (31,34)
AND (items_table.name LIKE '%{$term}%' 
OR items_table.description LIKE '%{$term}%'
AND items_table.active != '0')
使用()使顺序正确。现在,希望它将只给您id为31和34的行

我想实际上你要做的是:(加入item_表和album_表)


我想你的问题应该是这样的

选择*
从项目\表i右键连接相册\项目a
在i.id=a.id上
其中a.相册在(31,34)
和(i.name如“{$term}%”或i.description如“{$term}%”)
而我,活跃0'

完成并除尘。谢谢你!括号按你说的做了。
   SELECT * FROM items_table 
   RIGHT JOIN album_items 
   ON items_table.id=album_items.id 
   WHERE album_items.album IN (31,34)
   AND (items_table.name LIKE '%{$term}%' 
   OR items_table.description LIKE '%{$term}%'
   AND items_table.active != '0')