mysql поиск по части слова или слово+часть другого слова

211
03 октября 2017, 06:43
<?php include_once('db.php');
$query = ('SELECT * FROM carsekb WHERE car_name = :car ORDER BY car_name ASC');
$stmt = $pdo->prepare($query);
$stmt->execute(['car' => $_POST['carname']]);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<table>";
for ($i = 0; $i < count($results); $i++) { ?>
    <tr>
        <td><?= $results[$i]['car_name']; ?></td>
        <td><?= $results[$i]['uberstart']; ?></td>
        <td><?= $results[$i]['uberx']; ?></td>
    </tr>
<?php } 
echo "</table>"; ?>

Использую PDO. В данном примере поиск стоит по равному значению car_name = :car. Есть ли какой-то способ просто искать по части слова, к примеру, набираю volksw и жму поиск - вылазит volkswagen passat, volkawagen jetta и тд все что содержит volksw, и точно также если ищу volkswagen pas - вылезало volkswagen passat?

Answer 1

Поиск нужно делать по LIKE, а не по =

Что-то вроде такого:

$query = $database->prepare('SELECT * FROM table WHERE column LIKE ?');
$query->execute(array('%value%'));
Answer 2

Для поиска частичного совпадения может быть использована такая конструкция

USE ИМЯ_БД
SELECT * FROM `ТАБЛИЦА`
WHERE ИМЯ_ПОЛЯ LIKE 'ЧТО ИЩЕМ%'

Знак процента обязателен! Он как раз указывает на то что мы ищем только по первой части выражения.

READ ALSO
Как сравнить значения массивов и в случае совпадения выполнить запись в проверяемый массив php?

Как сравнить значения массивов и в случае совпадения выполнить запись в проверяемый массив php?

Есть два многомерных массива, arr1 и arr2Необходимо проверить, есть ли совпадения по значению arr1[$i][3] с arr2[$i][0], если есть дописать в конец массива...

384
Узнать адрес отправки формы

Узнать адрес отправки формы

Возможно ли как-то узнать email адрес, на который отправляются заполненные данные? http://3206161ru/services/zakaz-dokumenta/zakaz-dokumenta/

229
form post через ajax

form post через ajax

С ajax знаком ужасно, помогите разобратьсяЕсть форма:

260