Как выбрать переменную с разделителями-запятыми из Mysql

У меня есть образцы базы данных MySql со структурой и значениями, как показано ниже:

sno     firstname      status
1        John            Active
2        Kelly           Inactive
3        Harri           Passive
4        Kris            Dormant

Теперь, когда мне нужно выполнить запрос Sql со страницы PHP, а значения статуса — из нескольких флажков, которые я назначил в виде массива.

Я использовал функцию Implode для этого массива:

$status = $_POST['status'];
$mstat= implode (',', $status);
$query="SELECT * FROM USER WHERE status IN '$mstat'";
$result=mysql_query($query);

while ($members = mysql_fetch_assoc($result))
{
$fname= $members['firstname'];
echo $fname;
echo '</br>';
}

Проблема в том, что я не получаю никаких результатов. В чем может быть проблема. Или если кто-то может предложить / Совет для альтернативы.

Когда я echo $mstat; я получил Active,Passive,Dormant (Это основано на моем выборе флажка)

3

Решение

status Строки Вы должны обернуть их quotes, А также IN потребности () обернуть строковые значения. Пытаться —

$mstat= "'" . implode ("','", $status) . "'";
$query="SELECT * FROM USER WHERE status IN ($mstat)";

Если предположить, $status содержит некоторые или все эти значения, показанные в базе данных в формате массива.

7

Другие решения

Вот 100% рабочий ответ

$mstat= implode ("','", $status);
$query="SELECT * FROM USER WHERE status IN ('$mstat')";

IN работает следующим образом IN («Активный», «Пассивный», «Dormat»)
поэтому мы должны добавить » во все значения, что делается в функции implode.

1

Измените эту строку на:

$query="SELECT * FROM USER WHERE status IN ('$mstat')";

Аргумент должен в ()

!!!
КАЖДОЕ слово должно быть в »
лайк:
$ query = «SELECT * FROM USER WHERE status IN (‘Active’,» Inactive «)»

Вы можете изменить это как:

if ($mstat) $query .= ' ({$db->quote($status}) ';
-2
По вопросам рекламы [email protected]