Как можно искать данные, если в базе указан шаблон?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как можно искать данные, если в базе указан шаблон?

Сообщение Anonymous »

Есть ли шаблоны типа
abc????cba
или
??de??df
или любая другая комбинация.
Но пользователь введет полную строку, например, abc1234cba
, а скрипту необходимо вывести все строки, где есть это сочетание, с учетом шаблонов.
Под символом ? может подразумеваться любая буква или цифра.
Я делаю это в WP, ищем поле ACF
Вы пробовали это:

Код: Выделить всё

$vin_regex = str_replace(array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'), '.', $vin_regex);

$meta_query = array(
array(
'key' => 'vin',
'value' => $vin_regex,
'compare' => 'REGEXP',
),
);

$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => $meta_query,
);

$query = new WP_Query($args);

Не помогло
вы пробовали это

Код: Выделить всё

    $query = "
SELECT DISTINCT p.ID
FROM {$wpdb->posts} p
INNER JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id
WHERE p.post_type = 'product'
AND p.post_status = 'publish'
AND pm.meta_key = 'vin'
AND pm.meta_value LIKE REPLACE(%s, '?', '_')
LIMIT 10 OFFSET %d
";

$results = $wpdb->get_col($wpdb->prepare($query, $vin_input, $offset));
Не помогло

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-database
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»