Как создать ассоциативный массив из данных mysql с некой плюшкой

подскажите как создать массив из данных mysql + с добавлением параметра null если количество данных из бд меньше чем указано.

Получаю данные вот так:

$lim = 6;
$user = array();
$sql = "select login from `$tb_user` where `id` limit $lim"; 
$result = $mysqli->query($sql);
while($row = $result->fetch_assoc()){
    $user[] = $row;
}

На выходе получаю вот такой массив:

[{"login":"Admin"},{"nick":"Vera"},{"nick":"Roma"}]

Как сделать что бы на выходе было 6 пунктов данных в массиве только вот допустим у нас есть уже 3 которые выбрались из бд, и у нас есть лимит в 6 то к этим данным добавить 3 - null значения т.е. вот так:

[{"login":"Admin"},{"login":"Vera"},{"login":"Roma"},null,null,null]

Если допустим из бд мы получили только 1 значение то так:

[{"login":"Admin"},null,null,null,null,null]

Еще нужно что бы учитывалось что значение переменной $lim может меняться к примеру на 12 или 10

Вот такой велосипед мне нужно сообразить. Подскажите пожалуйста как такое реализовать? Заранее большое спасибо!


Ответы (2 шт):

Автор решения: Akina
( SELECT login FROM data_table )
UNION ALL
( SELECT NULL FROM some_table )
ORDER BY login IS NULL 
    /* , login */
LIMIT @rows_limit

где some_table - таблица, гарантированно содержащая записей не меньше, чем @rows_limit, либо CTE, генерирующее такое количество записей.

→ Ссылка
Автор решения: teran

если на стороне пхп, то

$user = array_pad($user, $lim, null);
→ Ссылка