【问题标题】:PHP Using mysql query with multiple ORPHP 使用带有多个 OR 的 mysql 查询
【发布时间】:2015-09-01 03:36:00
【问题描述】:

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

$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 很陌生

【问题讨论】:

  • 您确定您的表格中有 4 列吗? player1, player2, player3, player4 ?真的吗?

标签: php mysql phpmyadmin


【解决方案1】:

在 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 注入攻击。使用准备好的语句来使您的代码更安全。

【讨论】:

  • 你的括号组将语句的结尾双引号括起来。
【解决方案2】:

尝试对 OR 进行分组,因为如果 1 返回 true,则它们的组将返回 true。

$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'
    )"
);

【讨论】:

    【解决方案3】:

    试试这个:

    $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 . "')"); 
    

    【讨论】:

    • 你有 C++/JS 背景?
    • 告诉我,+ 应该做什么,数学?
    • 抱歉,我在一个项目中使用 python,有时我脑子里有一堆语言。
    猜你喜欢
    • 2012-09-05
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 2012-05-23
    相关资源
    最近更新 更多