1

現在、「customers」テーブル内に「camps」というTEXTフィールドがあり、複数の単語を保持できます。各ユーザーは、フィールド内に0〜約50語を含めることができます(スペースで区切る)。

各行の「camps」フィールドを検索して、「camps」フィールド内に特定の単語が含まれているユーザーを特定しようとしています。

例:

ユーザー1には、「camps」フィールドに「Camp1 Camp2Camp3Camp7」があります。

ユーザー2には、「キャンプ」フィールドに「キャンプ2」があります。

ユーザー3には、「キャンプ」フィールドに「」があります。

Camp2を持つすべての人を検索すると、User1とUser2の「camps」フィールドにCamp2があることを確認したいとします。

これが私がこれまでに持っているものです:

$camp = $_POST['camp'];

$customers = "SELECT * FROM customers WHERE camps LIKE '%$camp'";

$result = mysql_query($customers);

現時点では、「camps」フィールド内の正確な値のみを検出しているようです。「Camp2」を渡すと、ユーザー2のみが表示されます。ユーザー1とユーザー2に見せたいのですが。私は何が間違っているのですか?

4

3 に答える 3

2

他のワイルドカードがありません。検索語の後に他のテキストがあるものも一致させる必要があることを忘れないでください。「Camp2」がキャンプフィールドの最後のアイテムであるため、User2が見つかりました。

$customers = "SELECT * FROM customers WHERE camps LIKE '%$camp%'";

...または、少し読みやすくしたい場合:

$customers = "SELECT * FROM customers WHERE camps LIKE '%" . $camp. "%'";

...またはおそらく:

$sqlfmt = "SELECT * FROM customers WHERE camps LIKE '%%%s%%'";
...
$customers = sprintf($sqlfmt, $camp);
于 2012-05-31T02:22:32.097 に答える
0

where句は次のようにする必要があります。

where camps like '%Camp2%'

Camp2連結によって変数に置き換えることができます。

于 2012-05-31T02:35:45.347 に答える