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