поиск нескольких ключевых слов с php и mysql (где X нравится)

У меня есть код, который динамически ищет данные в базе данных с помощью ajax, но я могу искать только по одному ключевому слову за раз. Я хотел бы изменить его, чтобы я мог искать несколько ключевых слов. Теперь, если я набираю 2 слова, разделенные пробелом и в базе данных, данные не разделяются пробелом, результата не будет. Если в базе данных данные:

'playstation3' или 'play cool station3'

и ищу:

игровая приставка

результатов не было. Я хотел бы узнать, можно ли изменить код, чтобы я мог искать два или более ключевых слова или слова, разделенные пробелом или другим словом, или DOT или подчеркивание или (-) или (+) или (%), или (что-нибудь еще lol).

Я знаю, что я должен использовать pdo или mysqli, но я использую это только для тестирования!

$queried = $_POST['query']; $search = mysql_query("SELECT * FROM links WHERE name LIKE '%$queried%'"); while($searche = mysql_fetch_array($search)){ echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; } 

Чтобы динамически искать все ключевые слова, вы можете использовать функцию explode для разделения всех ключевых слов;

 $queried = mysql_real_escape_string($_POST['query']); // always escape $keys = explode(" ",$queried); $sql = "SELECT * FROM links WHERE name LIKE '%$queried%' "; foreach($keys as $k){ $sql .= " OR name LIKE '%$k%' "; } $result = mysql_query($sql); 

Примечание 1: Всегда избегайте ввода пользователя перед его использованием в запросе.

Примечание 2: функции mysql_ * устарели, используйте Mysqli или PDO в качестве альтернативы

Не используйте функции mysql_* даже для testing . Они не легче, чем mysqli , на всякий случай, если вы считаете, что это легко проверить, а затем переместите.

Однако вы можете разделить свой вход на a и попробовать это

 <?php $queried="abc,test, testing"; $values=explode(',',$queried); $sql="SELECT * FROM links WHERE"; $i=0; foreach($values as $v) { $v=trim($v); if($i==0) { $sql.=" name LIKE '%$v%'"; } else { $sql.=" OR name LIKE '%$v%'"; } $i++; } $search = mysql_query($sql); while($searche = mysql_fetch_array($search)){ echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; } ?> ресурсов <?php $queried="abc,test, testing"; $values=explode(',',$queried); $sql="SELECT * FROM links WHERE"; $i=0; foreach($values as $v) { $v=trim($v); if($i==0) { $sql.=" name LIKE '%$v%'"; } else { $sql.=" OR name LIKE '%$v%'"; } $i++; } $search = mysql_query($sql); while($searche = mysql_fetch_array($search)){ echo "".$searche['link']."</br>".$searche['name']."</br>".$searche['size']."</br>".$searche['category']."<hr></br></br>"; } ?> 

Просто добавьте предложение OR.

Например

 SELECT * FROM links WHERE name LIKE '%$keyword1%' OR name LIKE '%$keyword2%' 

Но я настоятельно рекомендую вам использовать параметризованный запрос или другую безопасную библиотеку, чтобы избежать Sql Injection Attacks