Обратите внимание, что вы, вероятно, может достичь чего-то вроде этого в вашем любимом mysql
интерфейсе, я использую SQLyog и вы можете сделать это с помощью инструмента «Поиск данных», я Конечно, у другого программного обеспечения, такого как workbench mysql, есть аналогичный вариант.
В любом случае, вы можете запросить у вас PHP-запрос. Получить все столбцы в массиве, запрашивая information_schema
, а затем сделать строку с каждого столбца имя как
"columnName LIKE '%$search%'"
, а затем implode
его на " OR "
, как это:
//what is the search?
$search = "something";
//get all the columns
$columns = mysqli_query("SELECT
COLUMN_NAME
FROM
information_schema.COLUMNS
WHERE TABLE_NAME = 'users'
AND TABLE_SCHEMA = 'yourDatabaseName' ");
//put each like clause in an array
$queryLikes = array();
while ($column = mysqli_fetch_assoc($columns)) {
$queryLikes[] = $column['COLUMN_NAME'] . " LIKE '%$search%'";
}
$query = "SELECT * FROM users WHERE " . implode(" OR ", $queryLikes);
echo $query; //should look like this:
//SELECT * FROM users WHERE column1 LIKE '%something%' OR column2 LIKE '%something%' OR column3 LIKE '%something%' OR ...
//so then
$users=mysqli_query($query);
while ($user = mysqli_fetch_assoc($users)) {
//do stuff with $user
}
Просто FYI, это, скорее всего, убийство вашей производительности по мере увеличения размера таблицы. – castis
Я думаю, что это был бы полезный вопрос, где его нужно было бы использовать в нескольких таблицах с умеренными размерами таблиц. – Kelsey
Я относительно уверен, что то, что вы ищете, не существует. Его полезность будет ограничена несколькими вариантами кросс, и это не очень хорошая идея запускать что-то вроде этого в производстве в любом случае. Вы могли бы заставить PHP генерировать SQL-запрос для вас и идти по этому маршруту. Тем не менее, я не администратор базы данных. – castis