Так что я пытаюсь создать запрос MySQL на основе ввода пользователем. У меня тонна флажков (около 50), поэтому я не хочу делать их индивидуально. Вот лишь некоторые из моих флажков:mysql-запрос на основе флажков и полей ввода
<input type="checkbox" name="check_list[]" value="ki67" /> ki67<br><br>
<input type="checkbox" name="check_list[]" value="myc" /> myc<br><br>
<input type="checkbox" name="check_list[]" value="mta1" /> mta1<br><br>
<input type="checkbox" name="check_list[]" value="mvd/cd34" /> mvd/cd34<br><br>
Я затем запустить их через PHP, чтобы сообщить пользователю, что было проверено:
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
echo $check . "<br>";
}
}
Теперь я хотел бы, чтобы запустить их через процесс MySQL для отображения сколько строк было выбрано. Вот мой код для этой части:
<?php
//perform database query
$query = "SELECT COUNT(*) ";
$query .= "FROM testdata ";
if(!empty($_POST['check_list'])) {
foreach($_POST['check_list'] as $check) {
$query .= "WHERE rd_$check = 1";
}
}
Тогда позже:
$result = mysqli_query($link, $query);
if (!$result) {
die("Database query failed.");
}
Проблема возникает, когда я пытаюсь проверить несколько ящиков. Я не знаю, как конкатенировать больше на $query
. Команда должна была бы выглядеть примерно так:
SELECT COUNT(*) FROM testdata WHERE rd_ki67 = 1 AND rd_myc = 1 AND ...;
Кто-нибудь знает, как это сделать?
Таким образом, вы не можете добавить слово 'and' к запросу? o_O –
нет, потому что вся строка не будет выполнена. Вы получите: SELECT COUNT (*) FROM testdata AND rd_ki67 = 1 AND rd_myc = 1 AND ... –
'SELECT COUNT (*) FROM testdata WHERE [rd_ki67 = 1 AND] [rd_myc = 1 AND] [rd_field3 = 1 ] 'См. Некоторый шаблон в' [] '? –