Не видя данных, все, что я могу сделать, это угадать, но это определенно неверно:
while($row = mysqli_fetch_assoc($resultParent)){
$selectedParent = $row['multipleselect_name'];
while($row = mysqli_fetch_assoc($resultChildren)){ //$row is overwritten
$selectedChild = $row['multipleselect_name'];
}
$selected = ($selectedParent == $selectedChild) ? "selected='selected'": '';
echo "<option value='{$selectedParent}' {$selected}>{$selectedParent}</option>";
}
Вы не можете повторять запрос несколько раз (технически это не так), но после первой итерациивнешнего цикла while внутренний цикл while выполняет итерацию по полному набору результатов $resultChildren
set.Поэтому на второй итерации внешнего цикла ваш результат будет возвращать значение false с этого момента.
Если вы хотите снова выполнить итерацию по результату (что в данном случае бессмысленно), вам придется выполнить mysqli_data_seek($resultChildren,0)
,Это бессмысленно, потому что вы можете получить данные до цикла.И использование in_array
более эффективно, чем циклическое повторение (даже если вы могли бы немного улучшить цикл, вызвав break после того, как нашли свое соответствие).
//only column you need is multipleselect_name, the smaller the result set the easier it is on the network trafic (so the faster it responds)
$sqlChildren = "SELECT multipleselect_name FROM multipleselect WHERE multipleselecttrackerid = $id";
$resultChildren = mysqli_query($con, $sqlChildren);
$selected = array_column(mysqli_fetch_all($resultChildren,MYSQLI_ASSOC), 'multipleselect_name');
/*
we need ['item1','item2', .... ] instead of [['multipleselect_name'=>'item1'],['multipleselect_name'=>'item2']]
I don't think you can fetch all from one column in mysqli
..PDO..
$selected = $stmt->fetchAll(PDO::FETCH_COLUMN, 0);
*/
while($row = mysqli_fetch_assoc($resultParent)){
$selectedParent = $row['multipleselect_name'];
$selected = in_array($selectedParent,$selected) ? "selected='selected'": '';
echo "<option value='{$selectedParent}' {$selected}>{$selectedParent}</option>";
}
Помимо того, что я упомянул выше, вы перезаписали $row
вторым циклом.Что в данном случае может и не иметь значения (вы больше не используете $ row из Parent), но это плохая практика, которая может вызвать все виды трудностей для отслеживания проблем.
Я упростил логику, потому что если:
$selectedParent = $parent['multipleselect_name']; //changed from row for clarity
$selectedChild = $child['multipleselect_name']; //changed from row for clarity
//and
$selectedParent == $selectedChild
//then
$parent['multipleselect_name'] = $child['multipleselect_name'];
//so if we have a list of all
$child['multipleselect_name']
//the we can find
$parent['multipleselect_name']
//in that list
Надеюсь, что это имеет смысл, это все равно что сказать a=b
и b=c
так a=c