PHP MySQL - 选择 id 不等于 2 个 id 之一的位置

Ibr*_*him -1 php sql pdo equals

所以我尝试随机选择 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));
Run Code Online (Sandbox Code Playgroud)

但得到:

解析错误:语法错误,意外的“SELECT * FROM player ORDER BY”(T_CONSTANT_ENCAPSED_STRING),期望标识符(T_STRING)或变量(T_VARIABLE)

Abr*_*ver 5

您需要AND确保它不等于<>两者:

WHERE id <> ? AND id <> ?    
Run Code Online (Sandbox Code Playgroud)

或者检查它是否不是IN列表:

WHERE id NOT IN(?, ?)
Run Code Online (Sandbox Code Playgroud)

我不确定 SQL 语句的顺序,请尝试:

SELECT * FROM player WHERE id <> ? AND id <> ?
         ORDER BY RAND() LIMIT 2 
Run Code Online (Sandbox Code Playgroud)

另外,你可能错过了类似的东西prepare

$statement = $db->prepare("SELECT * FROM player WHERE id <> ? AND id <> ?
                                   ORDER BY RAND() LIMIT 2");
Run Code Online (Sandbox Code Playgroud)