У меня есть следующий код:избежать повторения кода для запросов MySQL (множественные пока)
<?php
include_once "connect.php";
$question_01 = mysqli_real_escape_string($con, $_POST['question_01']);
// $question_02 - $question_09 go here...
$question_10 = mysqli_real_escape_string($con, $_POST['question_10']);
$i = 0;
$array_sum=[];
while ($i < 10){
$i++;
$sql = "SELECT * FROM parteners WHERE question_no = 1 AND answer_variant = '$question_01'";
$result = mysqli_query($con, $sql);
$final_array_1 = array();
while ($row = mysqli_fetch_array($result, MYSQLI_NUM))
{
$final_array_1 = $row;
$array_sum = array_map(function() {
return array_sum(func_get_args());
}, $array_sum, $final_array_1);
}
}
print_r($final_array_1);
Как вы можете видеть, что мне нужно повторить код для каждого $ вопроса _ ##. Есть ли более разумный способ сделать это, кроме повторения кода? Я не только забочусь о том, чтобы превратить все в спагетти кода, но и об эффективности операций, как во время загрузки.
Дайте мне знать, если вам нужно уточнение.
Обновление: В основном это должно увеличить значение «question_no» в запросе до тех пор, пока оно не достигнет 10 и не выберет соответствующее значение $ _POST для каждого вопроса.
, в чем проблема? используйте '$ i' для построения строки sql внутри цикла. Основная конкатенация строк. –
@JuanCarlosOropeza Я получил часть конкатенации. Меня больше интересовал процесс цикла. Должен ли я держать эти два белых? – SporeDev
'$ sql =" SELECT * FROM parteners ORDER BY question_no ASC LIMIT 10 ";' проверить это непосредственно в db и сообщить мне, показывая желаемый результат или нет? –