2015-12-18 5 views
0

Я озадачил создание базы данных mysql, изучил основы php, html и css .... и я не могу, для жизни меня, понять, почему этот простой запрос не возвращает все значения столбца которые отображаются в таблице. Это сайт для голосования, таблица с именем data_ (дата) ... в этом случае data_12_14_15. Есть много столбцов, но для простоты я буду придерживаться option_key, который имеет 3 значения ... 1,2,3 .... и Counter .... 0,0,4. Все значения были заполнены NOT NULL при создании таблицы и содержат 0s, поэтому их можно легко увеличивать, а все столбцы - INT (9), за исключением option_key, который является TINYINT. Все, что мне действительно нужно, это счетчик, но запрос не работает с любым столбцом ... кроме того, что это не подводит, просто массив никогда не получает все значения. Исповедь: Я рассмеялся, когда кто-то сказал, что они провели «2 ЧАСА!». по проблеме. В этом процессе я много раз проводил 2 дня. Ваша очередь смеяться.
Я сократил код до нуля и до сих пор не могу заставить его работать.Почему я не могу получить все значения из столбца mysql?

<?php 
    include 'AV2connect.inc.php'; 
    include 'AV2core.inc.php'; 

    $query = "SELECT option_key FROM data_12_14_15"; 
    $result = mysqli_query($mysqli, $query); 
    $row = mysqli_fetch_array($result); 

    var_dump($row); 
/* 
    array (size=1) 
    0 => string '1' (length=1) 
*/ 
    ?> 

Я использую WAMP, Chrome и до сих пор очень удачлив. Благодарю.

+1

Ты будешь смеяться. Вам понадобится цикл, чтобы вытащить все значения. Что-то вроде 'while ($ row = mysqli_fetch_array ($ result)) {var_dump ($ row); } ' – Terminus

+0

где инициализируется' $ mysqli'? Редактирование: неважно, не понимал, что вы только что получили один ряд, я думаю, что Terminus правильный –

+0

Да, я давно понял, что цикл будет работать, и я как бы получил то, что было сказано ... НО ... снова и снова в учебниках он говорит вам, что вы можете просто поместить заголовок столбца, скажем, «Имена», и он вернет все имена. Возможно, у меня есть ментальный блок, идущий сюда, и мне не хватает разницы между столбцом и строкой. Попытка сделать это одним звонком в базу данных ... и спасибо! – plowboyzzt

ответ

1

mysqli_fetch_array() только выбирает один ряд за раз. Если вы хотите загрузить весь набор результатов в массив необходимо использовать

$data = mysqli_fetch_all($result); 

который требует, чтобы ваш PHP-сервер установлен драйвер mysqlnd.

Вы также можете использовать одно из следующих действий:

$data = mysqli_fetch_all($result, MYSQLI_ASSOC); 
$data = mysqli_fetch_all($result, MYSQLI_BOTH); 

Первый дает массив индексированных столбцов по имени столбца; второй - именованные и нумерованные столбцы.

Если у вас нет mysqlnd установлен (проверьте вывод phpinfo(), чтобы узнать), вы должны вызвать mysqli_fetch_* в цикле, чтобы прочитать результат установить одну запись за один раз.

Надеюсь, что это поможет.

+0

ДА! Это работало без изменения каких-либо настроек. Большое спасибо. – plowboyzzt

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