PHP MySQL - select 其中 id 不等于 2 个 id 中的两个
PHP MySQL - select where id not equal to two one of 2 ids
所以我试图随机选择 2 行,但 id 不允许等于 x 或等于 y。
这就是我到目前为止所尝试的:
$statment = $db -> "SELECT * FROM player ORDER BY RAND() LIMIT 2 WHERE
NOT(id = ?) OR WHERE NOT(id=?)";
$statement->execute(array($player1, $player2));
但是得到:
Parse error: syntax error, unexpected '"SELECT * FROM player ORDER BY' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) or variable (T_VARIABLE)
您需要 AND
以确保它不等于 <>
两者:
WHERE id <> ? AND id <> ?
或者检查它是否IN
一个列表:
WHERE id NOT IN(?, ?)
而且我不确定 SQL 语句的顺序,试试:
SELECT * FROM player WHERE id <> ? AND id <> ?
ORDER BY RAND() LIMIT 2
此外,您可能还漏掉了 prepare
:
$statement = $db->prepare("SELECT * FROM player WHERE id <> ? AND id <> ?
ORDER BY RAND() LIMIT 2");
使用NOT IN
。您还错过了对 prepare()
.
的调用
$statment = $db ->prepare("SELECT * FROM player
WHERE id NOT IN (?, ?)
ORDER BY RAND()
LIMIT 2");
此外,SELECT
语句中子句的顺序是:
SELECT
FROM
JOIN
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
所以我试图随机选择 2 行,但 id 不允许等于 x 或等于 y。
这就是我到目前为止所尝试的:
$statment = $db -> "SELECT * FROM player ORDER BY RAND() LIMIT 2 WHERE
NOT(id = ?) OR WHERE NOT(id=?)";
$statement->execute(array($player1, $player2));
但是得到:
Parse error: syntax error, unexpected '"SELECT * FROM player ORDER BY' (T_CONSTANT_ENCAPSED_STRING), expecting identifier (T_STRING) or variable (T_VARIABLE)
您需要 AND
以确保它不等于 <>
两者:
WHERE id <> ? AND id <> ?
或者检查它是否IN
一个列表:
WHERE id NOT IN(?, ?)
而且我不确定 SQL 语句的顺序,试试:
SELECT * FROM player WHERE id <> ? AND id <> ?
ORDER BY RAND() LIMIT 2
此外,您可能还漏掉了 prepare
:
$statement = $db->prepare("SELECT * FROM player WHERE id <> ? AND id <> ?
ORDER BY RAND() LIMIT 2");
使用NOT IN
。您还错过了对 prepare()
.
$statment = $db ->prepare("SELECT * FROM player
WHERE id NOT IN (?, ?)
ORDER BY RAND()
LIMIT 2");
此外,SELECT
语句中子句的顺序是:
SELECT
FROM
JOIN
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT