0

好的,我对我想做的事情是否可行感到有点困惑。

在数据库中,“slot”字段包含格式为(第一部分:第二部分:第三部分)的信息,其中:是分隔符。

我需要与$matchid该领域的第一块进行比较。所以让我们说slot1 = 100:200:300

我需要检查是否$matchid等于数据库中任何字段的第一部分

$matchid = mysql_fetch_row(mysql_query(
     "SELECT `matchid` 
      FROM `matches` 
      WHERE `winner` = 0 AND 
            (`slot1` OR `slot2` OR `slot3` OR `slot4` OR `slot5` 
             OR `slot6` OR `slot7` OR `slot8` OR `slot9` OR `slot10`) = $matchid"
      ));

如果$matchid最初是 100 并且slot1 = 100:200:300查询不会返回任何内容,但我需要这是一个匹配项。

我不知道我是否已经正确解释了这一点,但我们开始吧。我尝试使用爆炸,但并没有真正起作用

4

2 回答 2

0

要使其与您现有的数据结构一起使用,您可以执行以下操作:

SELECT `matchid` FROM `matches` 
WHERE `winner` = 0 AND (
  `slot1` LIKE "{$matchid}:%" 
  OR `slot2` LIKE "{$matchid}:%"
  /* etc, etc... */
)

话虽如此,如果您将插槽分隔到它们自己的表中,您将获得更清晰的查询。此外,转义 $matchid 或使用准备好的语句。

于 2013-02-22T23:30:57.267 回答
0

尝试:

$matchid = mysql_fetch_row(mysql_query("SELECT `matchid` FROM `matches` WHERE `winner` = 0 AND         (`slot1` OR `slot2` OR `slot3` OR `slot4` OR `slot5` OR `slot6` OR `slot7` OR `slot8` OR `slot9` OR `slot10`) = ".$matchid));

注意连接字符串的点。通过这种方式,php 传递了 $matchid 的实际值,而在您的代码中,您传递了字符串“$matchid”。

如果 $matchid 是整数,则必须在查询中使用 strval($matchid)。

于 2013-02-22T23:34:47.890 回答