2016-08-05 5 views
1

Когда я использую mysqli_fetch_array(), я получаю массив, но как читать значения? Является ли вариант While-Loop единственным вариантом или я могу выбрать любое значение из строки и столбца, как многомерный массив с индексом, например row[0] column [3]?Чтение данных из mysqli_fetch_array, как многомерный массив?

+0

это массив. прочитать данные п rom это как любой другой массив ... 'var_dump ($ arr)', чтобы узнать, что у вас есть. –

ответ

1

while цикл выбирает вам строку на итерацию.

Вы можете получить все строки, как многомерный массив с mysqli_fetch_all

После этого вы можете использовать выбрать нужные значения с [rowNum][colNum]

Но будьте осторожны, когда ваш результат имеет много строк - массив может быть очень большим и вызвать память или другие вопросы.

Update уточнить:

, если вы хотите получить многомерный массив строк существуют два пути:

Первое: итерация над mysqli_result с fetch_assoc/fetch_array и добавить строку в массив :

$rows = array(); 
while ($row = mysqli_fetch_array()) { 
    $rows[] = $row; 
} 
echo $rows[0]['whatever']; 

Во-вторых: получают все результаты с вызовом одной функции:

$rows = mysqli_fetch_all(); 
echo $rows[0]['whatever']; 

Это все. Больше нет доступных методов.

+0

Спасибо за ответ! Так что я должен сделать что-то подобное? while ($ row = mysql_fetch_assoc ($ query)) { $ persons [] = $ row; } –

+0

Да, вы можете. В конце вы будете иметь тот же массив, что и с mysqli_fetch_all –

+0

OK, но есть ли какие-нибудь лучшие способы сделать это? Нужно ли использовать цикл While для добавления результата в массив? –

0

Это зависит от того, как вы возвращаете результаты из базы данных.

В вашей функции mysqli_fetch_array есть флаги, которые вы можете изменить для изменения возвращаемого результата.

Если вы используете $row = mysqli_fetch_array($result, MYSQLI_ASSOC); или в ООП $row = $result->fetch_array(MYSQLI_ASSOC);

, то вы можете получить доступ к возвращаемый результат в качестве имени столбца в цикле в то время как $ строки [ «имя»] или $ грести [ «возраст»]

или, если вы используете $row = mysqli_fetch_array($result, MYSQLI_NUM); или в ООП $row = $result->fetch_array(MYSQLI_NUM);

, то вы можете получить доступ к возвращаемый результат в то время как цикл, как $ строки [0] или $ грести [3]

Простой пример будет

while($row = mysqli_fetch_array($result)) { 
    echo $row['name'] . " " . $row['age']; 
} 

Для получения дополнительной информации. Прочитано PHP.net Fetch Array

0

Ваш вопрос предполагает, что ваша цель состоит в том, чтобы получить единственное значение. Если это так, вы должны ограничить свой запрос, чтобы вернуть только то, что ищете, а не получать все, а затем находить то, что хотите в результатах с PHP.

Для столбца, указать один столбец вы хотите вместо того, чтобы использовать *, (SELECT one_column FROM your_table) и для строки, либо использовать пункт WHERE выбрать конкретный идентификатор (при условии, что определяется на вашем столе) или используйте пункт LIMIT для выбора определенного номера строки из результирующего набора, тогда вам не придется извлекать в цикле или извлекать все. Результат запроса (если он успешный) будет иметь только одну строку с одним столбцом, и вы можете получить один раз и получить ваше значение.

Конечно, если вы собираетесь нужно сделать это несколько раз (например, в цикле), это не самый лучший подход.

+0

Я хочу использовать массив, чтобы я мог разделить результат на более мелкие группы. Вместо запроса для каждой группы и использования между x и x, потому что я также хочу получить случайный результат. –

Смежные вопросы