目前,我的“客户”表中有一个名为“camps”的文本字段,可以容纳多个单词。
每个用户在字段中可以有0到大约50个字(用空格分隔)
我试图搜索每行的每个“camps”字段,以确定哪个用户的“camps”字段中有特定的单词。
例子:
用户1在其“camps”字段中有:“Camp1 Camp2 Camp3 Camp7”。
用户2在其“camps”字段中有“Camp2”。
用户3在其中的“camps”字段中有“”个。
假设我搜索所有有Camp2的人,我希望它确定User1和User2在他们的“camps”字段中有Camp2。
以下是我目前掌握的情况:

$camp = $_POST['camp'];

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

$result = mysql_query($customers);

目前,它似乎只检测“营地”字段中的精确值。如果我通过“Camp2”,将只显示用户2。我想让用户1和用户2显示。我做错什么了?

最佳答案

你错过了另一个通配符。记住,你也需要匹配搜索词后面有其他文本的内容。找到User2是因为“Camp2”是camps字段中的最后一项。

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

10-06 15:23