Я хочу, чтобы вставить "Это яблоко, это плод", чтобы запросить базу данных и только совместить слова "яблоко" и "фрукты", а не "фрукты" из базы данных и вернуть "1 фруктовый яблочный красный 10",.
Как изменить код запроса?
Название базы данных "пищевые" поля, как показано ниже:
id name1 name2 name3 name4 type
1 fruit apple red 10 article
2 fruit banana yellow 12 article
3 drink beer yellow 6 article
4 fruits apple yellow 16 books
код:
mysql_connect("localhost", "root", "root") or die(mysql_error());
mysql_select_db("article") or die(mysql_error());
... ...
echo $match . "r"; // $match= This is a apple, it is a fruit
$query = mysql_query("SELECT * FROM food WHERE name1, name2 like '%$match%' ");
$row=mysql_fetch_array($query);
echo $row['id ']. "r" .$row['name1']. "r".$row['name2']. "r".$row['name3']. "r".$row['name4']. "n";
Трудно сказать, но я думаю, что если вы пытаетесь избежать возвращения чего-либо, что не совпадает с точным словом (apples!= apple). Вам придется разбить строку $match на более мелкие части и проверить их отдельно. возможно, используйте explode(), чтобы разбить строку на части, используя пробелы, а затем выполнить точные совпадения применимых слов.
В настоящее время вы проверяете любые данные в базе данных, которые в любом случае могут напоминать строку. Таким образом, он может вернуть "ананас - это плод" только потому, что он имеет слова "есть", "а" и "плод".
Возможно, также стоит переименовать столбцы базы данных. Никто, что вы выглядите кодом с именем1, name2, name3.... как насчет типа, имени, цвета, количества?
$match = trim($match);
$match = strtolower($match);
$newmatch = explode(" ",$newmatch);
Итак, если $match был "Это яблоко", $ newmatch = array ("this", "is", "an", "apple" )
Конечно, это не избавит от каких-либо знаков препинания. Но вы можете сделать это перед рукой, если хотите, с помощью trim и preg_replace.
Help: trim(), strtolower(), explode()