Запрос либо не возвращал строк, либо был ошибочным, поэтому возвращается FALSE
. Измените его на
, если (! $ Dbc || mysqli_num_rows ($ dbc) == 0)
mysqli_num_rows
: [ ! d4]
Возвращаемые значения
Возвращает TRUE при успешном завершении или FALSE при сбое. Для SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query () вернет объект результата.
blockquote>
Проблема заключается не в методе push
для Array.prototype
, а в ваших привязках. Вы изменяете один и тот же объект s
на каждой итерации вашего блока async.foreach
, который на самом деле является тем же объектом, что и ранее определенный Subscriber
.
Сначала вы должны перенести объявление s
переменная к блоку foreach.
А также, если вы хотите создать объект со значениями по умолчанию, он должен быть function
, который возвращает новый объект:
function Subscriber() {
return {
'userID': '',
'email': '',
'name': '',
'stage': '',
'poster': false,
'canEmail': false,
'stage': ''
};
};
И тогда вы можете создать экземпляр объекта Subscriber
следующим образом:
var s = Subscriber();
Подробнее см. этот ответ или Закрытие на MDN .
Вы должны копировать подписчика каждый раз. В противном случае вы каждый раз изменяете один и тот же объект. Просто используйте s = copy(Subscriber)
Клонирование объекта перед вводом в массив также решает проблему.
temp = clone(s);
subscribers.push(temp);
Получить https://www.npmjs.com/package/clone