我的目标是在A列中搜索字符串B,如果找到它,则返回找到它的行,如果找不到,我也需要知道它以便采取不同的路线行动。
我目前的PHP代码:
$string = "teststring";
$searchquery = "SELECT *
FROM AllStringsTable
WHERE `Column_A` LIKE '$string'"
$searchresult = mysql_query($searchquery) or die(mysql_error());
$row = mysql_fetch_row($searchresult);
echo "The returned row was: $row";
这只是打破并且什么都不做,所以我想我离开这里了。另外,我已经读过,对于不需要通配符子串等的精确字符串搜索,不需要LIKE。所以我不确定我会用什么......
答案 0 :(得分:3)
你快到了。您需要%
通配符:
// First, prevent sql injection with mysql_real_escape_string
$string = mysql_real_escape_string($string);
$searchquery = "SELECT * FROM AllStringsTable WHERE `Column_A` LIKE '%{$string}%'";
// ----------------------------------------------------------------^^^-------^^^
$searchresult = mysql_query($searchquery) or die(mysql_error());
if (mysql_num_rows($searchresult) == 0) {
echo "no rows found";
}
else {
// You need to loop over the result resource to get all the rows.
// Better to use mysql_fetch_array()
while ($row = mysql_fetch_array($searchresult)) {
$print_r $row;
}
答案 1 :(得分:2)
如果您想进行完全匹配,请使用 = 代替 LIKE :
SELECT ... WHERE Column_A = '$string';
如果您想进行子字符串匹配(我怀疑它更符合您的要求),请将 LIKE 与%通配符一起使用:
SELECT ... WHERE Column_A = '%$string%';
不同之处在于第一个查询要求整个Column_A与完全匹配。第二个查询只要求在列的某处找到确切的单词。