0

わかりました、やりたいことが可能かどうかについて少し混乱しています。

データベースの「スロット」フィールドには、(1 番目のピース:2 番目のピース:3 番目のピース) の形式で情報が含まれています。ここで、: は区切り文字です。

$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 に答える