Я использую PHP для получения значения из MySQL. Моя таблица имеет следующую форму:
COL1 = MAIL mail@mail.com COL2 = NAME myname
и я получаю из базы данных строку пользователя.
$query = mysqli_query($conn, "select * from user where mail = 'telmo@mail.com'"); $row = mysqli_fetch_array($query); print_r($row);
Но мой вывод очень странный, он дает мне как двумерный массив следующим образом:
Array ( [0] => mail@mail.com [MAIL] => mail@mail.com [1] => myname [NAME] => myname )
Я изучаю PHP, и мне интересно, должно ли это быть таким. Потому что мне хотелось бы чего-то большего:
MAIL => mail@mail.com NAME => myname
Может быть, я не очень хорошо понимаю этот синтаксис, но вот почему я ищу помощь. заранее спасибо
Заранее спасибо
Из руководства
mysqli_fetch_array () – это расширенная версия функции mysqli_fetch_row (). В дополнение к хранению данных в числовых индексах массива результатов функция mysqli_fetch_array () также может хранить данные в ассоциативных индексах, используя имена полей результирующего набора как ключи.
То, что вы действительно ищете, – mysqli_fetch_assoc()
Возвращает ассоциативный массив, соответствующий выбранной строке или NULL, если строк больше нет.
Либо укажите MYSQLI_ASSOC после запроса, либо используйте mysqli_fetch_assoc. из руководства:
resulttype Этот необязательный параметр является константой, указывающей, какой тип массива должен быть получен из данных текущей строки. Возможными значениями для этого параметра являются константы MYSQLI_ASSOC, MYSQLI_NUM или MYSQLI_BOTH.
Используя константу MYSQLI_ASSOC, эта функция будет вести себя одинаково с mysqli_fetch_assoc (), а MYSQLI_NUM будет вести себя одинаково с функцией mysqli_fetch_row (). Окончательный вариант MYSQLI_BOTH создаст единый массив с атрибутами обоих.
Руководство: http://us2.php.net/mysqli_fetch_array