4

我已经做了一个选择,但无法让它与 WHERE LIKE 功能一起使用。下面的行有什么问题?

$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' AND ORDER BY id DESC");

它一直有效,直到我添加

AND platform LIKE '%wiiu%'

平台列包含来自选择框表单的具有多个值的单元格。所以它写道,wiiu,ps4,xbox360,pc等......一定很简单,但我尝试了一百万次......

4

7 回答 7

12

去掉AND前面的ORDER BY

$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' AND ORDER BY id DESC");

应该

$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' ORDER BY id DESC");
于 2013-08-20T14:06:09.020 回答
2

有一个额外的AND,它应该是:

$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' ORDER BY id DESC");
于 2013-08-20T14:07:19.350 回答
2

请不要使用 mysql_*,因为它已被弃用,请改用 mysqli_ 或 PDO。
参考http://php.net/manual/en/book.mysqli.php

并将您的查询更改为

SELECT * FROM games 
WHERE soort='nieuws' 
AND gamenaam='$spelnaam' 
AND platform LIKE '%wiiu%' 
ORDER BY id DESC"
于 2013-08-20T14:12:46.993 回答
1
$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' ORDER BY id DESC");

你最后有额外的'AND'

于 2013-08-20T14:06:47.530 回答
1
SELECT * FROM games
WHERE soort = 'nieuws'
AND gamenaam = '$spelnaam'
AND platform LIKE '%wiiu%'
ORDER BY id DESC

不应该有一个ANDbeforeORDER BY声明。

另外,我觉得有必要要求您考虑使用mysqliPDO代替mysql函数,因为mysql已弃用。

于 2013-08-20T14:07:53.633 回答
0

它应该是这样的:

$result = mysql_query("SELECT * FROM games WHERE soort='nieuws' AND gamenaam='$spelnaam' AND platform LIKE '%wiiu%' ORDER BY id DESC");
于 2013-08-20T14:06:50.953 回答
0

您真的不应该将逗号分隔的值放在字段中。你实际上提供了一个很好的例子,说明为什么不说你有控制台名称。如果您正在寻找与原始 Wii 相关的东西怎么办?你会有类似的东西WHERE soort LIKE "%wii%",对吧?好吧,这也将返回所有与 WiiU 相关的项目,因为“WiiU”也是 LIKE “%wii%”。

执行此操作的正确方法包括制作和加入链接表。

于 2013-08-20T14:10:35.723 回答