Выбрать строки, где 10 столбцов

Я хочу получить строки, используя одну строку, но эта строка используется для проверки более 1 столбца, ровно 5, например

-----------------------------------------------
|  id  |  code  |  1  |  2  |  3  |  4  |  5  |
-----------------------------------------------
|  01  | Number |  5  |  7  |  10 |  21 |  1  |
|  02  | String |  v  |  q  |  s  |  f  |  w  |
|      |        |     |     |     |     |     |
|      |        |     |     |     |     |     |
|      |        |     |     |     |     |     |
-----------------------------------------------

Я хочу сделать SELECT mysqli, используя 5 столбцов (1, 2, 3, 4, 5), если я использую метод зацикливания, это потратит много времени.

я пробовал проблему с этим кодом

$value = "q";
for ($x = 1; $x <= 5; $x++) {
  $cek = mysqli_query($con,"SELECT * FROM table where $x='$value' and id='02'")
  if (mysqli_num_rows($cek) == 1) {
    echo "success";
  } else {
    echo "fail";
  }
}

Я успешно использую этот код, но процесс слишком долгий

есть ли более простой и практичный способ решить эту проблему? Спасибо

есть ли более простой и практичный способ решить эту проблему? — Создайте свою базу данных в соответствии с общепринятыми принципами, и это может быть простой выбор.
Nigel Ren 21.01.2019 11:23
WHERE `1` = '$value' OR `2` = '$value' OR ...…?!
deceze 21.01.2019 11:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
2
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как уже отмечалось в комментариях, дизайн вашей базы данных неоптимален. Возможно, вы захотите пересмотреть и изменить его. Кроме того, иметь имена столбцов 1, 2 и т. д. — плохая идея очень. По крайней мере, пусть они начинаются с буквы. А еще лучше дайте им разумные имена, указывающие, какие данные эти столбцы на самом деле содержат.

Теперь, предполагая, что вы выяснили, какими на самом деле должны быть имена ваших столбцов, вы можете использовать простой оператор IN для получения ваших данных. Обычный/распространенный способ его использования

WHERE some_column IN ('value1', 'value2', ...)

Тем не менее, ничто не мешает вам использовать его наоборот:

WHERE 'some_value' IN (column1, column2, ...)

Таким образом, ваш оператор SQL становится примерно таким:

SELECT *
FROM table
WHERE '$value' IN (column1, column2, column3, column4, column5)
AND id='02'

Теперь, если у вас есть имена столбцов в массиве, вы можете сделать это следующим образом:

$testColumns = ['column1', 'column2', 'column3', 'column4', 'column5'];
$value = "q";

$inColumns = implode(',', $testColumns);
$sql = "SELECT * FROM table WHERE '$value' IN ($inColumns) AND id='02'";
$cek = mysqli_query($con, $sql);

Обновлено: Если ваши имена столбцов нестандартны, например. вышеупомянутые 1, 2 и т. д., или в них есть пробелы, то простой implode не будет работать, потому что вам нужно заключать в кавычки каждое имя столбца. В этом случае вам понадобится что-то вроде этого:

$inColumns = implode(',', array_map(function($c) { return "`$c`"; }, $columns));

Другие вопросы по теме