Фактическая часть кода PHP выглядит следующим образом:
$q = "SELECT DISTINCT c.category_name
FROM products p
LEFT
JOIN categories c
ON c.category_id = p.category_id";
$result = mysqli_query($dbc, $q);
// the code below ignores result of the preceding query
$sql = "SHOW COLUMNS FROM `categories`";
$columns = mysqli_query($dbc,$sql);
$arr = [];
while( $row = mysqli_fetch_array($columns, MYSQLI_ASSOC) ) {
$arr[] = $row;
}
$i = 1;
foreach( $arr as $entry ) if( $i > 1 ) { continue; }
// the preceding foreach loop is ended, so the following is not part of that loop
{
echo $entry['Field'];
foreach( $entry as $key=>$value ) {
var_dump($arr);
}
$i++;
}
(Нет ссылки на $result
, результирующий набор из этого первого запроса просто отбрасывается. Трудно определитьчто это должно быть достигнуто. Зачем вообще нужна переменная $i
? Какова работа с циклическим прохождением каждого элемента массива и выполнением «продолжения» с условием, которое никогда не будет выполнено?И почему нам нужно выполнить запрос SHOW COLUMNS?
Это просто несвязный ригмарол.
Я просто догадываюсь, но похоже, что работа, которую мы хотим выполнить, - это получить списокcategory_id
и category_name
значений, и украсить этот список как
<select ... >
<option value="42">Computers </option>
<option value="43">Smartphpones </option>
</select>
Но опять же, я просто догадываюсь.
Кажется, что мы могли бы получить это с помощью запроса,и сохраните это в массиве:
$sql = "SELECT c.category_id
, c.category_name
FROM products p
LEFT
JOIN categories c
ON c.category_id = p.category_id
GROUP
BY c.category_id
, c.category_name
ORDER
BY c.category_name";
$result = mysqli_query($dbc, $sql);
$arr = [];
while( $row = mysqli_fetch_array($result, MYSQLI_ASSOC) ) {
$arr[] = $row;
}
И как только мы сделаем это при инициализации, как тогда, когда мы проверяем html-страницу, когда мы добираемся до точки, мы хотим сбросить список вHTML, мы бы сделали это вцикл примерно такой:
foreach( $arr as $val ) {
echo $val['category_id'];
echo $val['category_name'];
}