Команда динамического SQL

0

Я хочу иметь возможность получать только значения, когда в нескольких столбцах есть "1". Однако имена столбцов хранятся динамически в переменной. Как я могу это сделать?

Это то, что у меня есть. Столбцы выложены следующим образом
$Columns = "Computer, Science, Algebra, Biology, Networking";
//This is Dynamic so $Columns may be like this next time
$Columns = "Biology, Networking";
$SQL = "SELECT * FROM users WHERE '1' IN(".$Columns.")";

Прямо сейчас он выбирает всех пользователей, у которых есть "1" в любом из столбцов

Я только хочу получить пользователей, которые имеют "1" во ALL из переменных в массиве $Columns не только один из них

  • 0
    Я не могу сравнить это так, мои имена столбцов происходят из одной переменной. Динамически генерируется на основе раскрывающегося списка. Таким образом, все столбцы находятся в одной переменной, которая называется $ columns
  • 1
    Это можно сравнить «так». Сгенерируйте SQL соответствующим образом. Начните с создания массива имен столбцов. Затем подключите / переберите массив для создания SQL.
Показать ещё 11 комментариев
Теги:

1 ответ

0

Поскольку переменная $ column может быть разных размеров, вам нужно будет создать свою инструкцию sql на основе количества столбцов в массиве в цикле for:

// SET your first column IN
$sql = "SELECT * FROM users WHERE '1' IN (".$Columns(0).")"

//Run the for loop to build sql on all subsequent columns
// size of will give you the number of columns in your array
$max = sizeof($columns);
for($i = 1; $i < $max;$i++)
{
//Use the "AND" to make sure "1" is in all columns
$sql.=" AND '1' IN (".$Columns($i).")
}

$sql.=";"

Мой код может быть не идеальным, но должен помочь вам в правильном направлении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню