PHP 使用 mysql 多个 OR 查询

PHP Using mysql query with multiple OR

好的,我没有找到任何可以帮助我解决这个问题的东西

$hvorerjeg = $db->query("SELECT * 
    FROM `ts` 
    WHERE `aktiv` = '1' 
      AND `player1` = '$obj->id' 
      OR `player2` = '$obj->id' 
      OR `player3` = '$obj->id' 
      OR `player4` = '$obj->id'"); 
//Checks if user is player1 or player2 or player3 or player4

我想检查用户是player1、player2、player3还是player4的代码 但这对我不起作用,我现在在某个地方找了 1 个半小时的答案,但我无法解决。抱歉,如果这是一件非常简单的事情,但我对 php

很陌生

在 SQL 中,AND 运算符优先于 OR 运算符。

$hvorerjeg = $db->query("SELECT * FROM `ts` WHERE `aktiv` = '1'
  AND (
  `player1` = '$obj->id' OR
  `player2` = '$obj->id' OR
  `player3` = '$obj->id' OR
  `player4` = '$obj->id')
");

附带说明一下,此代码容易受到 sql 注入攻击。使用准备好的语句来让您的代码更安全。

尝试对 OR 进行分组,因为如果 1 return 为真,他们的组将 return 为真。

$hvorerjeg = $db->query(
    "SELECT * FROM `ts` WHERE 
    `aktiv` = '1' AND 
    (
        `player1` = '$obj->id' OR 
        `player2` = '$obj->id' OR 
        `player3` = '$obj->id' OR 
        `player4` = '$obj->id'
    )"
);

试试这个:

$hvorerjeg = $db->query("SELECT * 
    FROM `ts` 
    WHERE aktiv = '1' 
    AND (player1 = '" .  $obj->id . "'" . 
         " OR player2 = '" . $obj->id . "'" . 
         " OR player3 = '" . $obj->id . "'" . 
         " OR player4 = '" . $obj->id . "')");