Используемый метод (mysql_fetch_array
) требует ссылки на запрос выполнения, т. Е.:
$queryCursor = mysql_query($query);
while($row = mysql_fetch_array($queryCursor))
{
// Do your thing with $row
}
Он также возвращает "следующую строку" из результатаустановить, а не весь результат.
Причина, по которой вы получаете повторяющиеся записи, заключается в том, что mysql_fetch_array принимает вторичный параметр, который описывает, должен ли метод возвращать числовой, ассоциативный или оба типа в строке для каждого столбца.По умолчанию возвращаются ОБА числовые и ассоциативные записи для каждого столбца.
Если вам нужны только числовые или ассоциативные столбцы, либо укажите последний параметр как MYSQL_ASSOC
, либо используйте другую функцию, например mysql_fetch_assoc
.
В качестве последнего замечания я настоятельно рекомендую вам использовать какой-либо тип DBAL (уровень абстракции базы данных) и, необязательно, ORM (объектно-реляционное отображение), поскольку для встроенной библиотеки требуетсямного кода котельной плиты всякий раз, когда вы хотите взаимодействовать с базой данных.Это также усложняет или, по крайней мере, требует от вас большего кодирования, когда вы хотите настроить более сложные вещи, такие как общие или множественные соединения, делегирование запросов CRUD определенному соединению (чтобы впоследствии его можно было реплицировать в ведомые базы данных) и т. Д.В DBAL часто есть встроенные функции.ORM заботится о прозрачном преобразовании реляционного представления в объектно-ориентированное представление, позволяя вам сосредоточиться на своем приложении, а не создавать код отображения.
На ум приходят следующие библиотеки: Zend_Db и Учение .Существует множество других библиотек, и я бы порекомендовал вам найти активно поддерживаемую библиотеку, соответствующую вашему стилю программирования.