2014-06-12 3 views
-3

Я новичок в MySQL и PHP (но имею опыт работы с JavaScript и WordPress). У меня есть таблица с только идентификаторами и метками времени, я пытаюсь извлечь загруженный час, используя этот запрос:Возвращаемый массив, а не значение

PHP/MySQL:

$query = 'SELECT hour(date) AS h FROM bike_main GROUP BY h ORDER BY count(*) DESC LIMIT 1'; 
$result=mysql_query($query); 
$row = mysql_fetch_assoc($result); 
echo '<pre id="hour">'.print_r($row,true).'</pre>'; 

Это выводит следующее:

Array 
(
    [h] => 17 
) 

Как я бы получил только значение (в данном случае это было бы 17), а не весь массив?

Я знаю, что этот вопрос кажется действительно базовым, но я не смог найти ответа на него в другом месте в Stack Overflow.

+0

Используйте '$ строки [0]' или '$ row ['h']' – developerwjk

+0

Используйте '$ row ['h']'. Если вы не знаете, каково значение ключа, вы можете использовать 'mysql_fetch_array()' вместо этого, а затем '$ row [0]'. –

+2

Если вы только начинаете изучать PHP, изучайте использование расширений MySQLi или PDO с помощью подготовленных операторов и привязывайте переменные, вместо того, чтобы учиться с использованием старого, устаревшего расширения MySQL. –

ответ

0

mysql_fetch_assoc() возвращает массив с парами ключ-значение. В вашем случае h является ключом. Вы можете получить доступ к значению этот путь:

$row['h']; 

Так что ваш код будет выглядеть следующим образом:

echo '<pre id="hour">'.$row['h'].'</pre>'; 

Пожалуйста, обратите внимание, что mysql_* функции устарели. Используйте вместо этого mysqli или PDO. См. Эту тему для более подробной информации: Why shouldn't I use mysql_* functions in PHP?

0

Вот как вы это сделаете.

$query = 'SELECT hour(date) AS h FROM bike_main GROUP BY h ORDER BY count(*) DESC LIMIT 1'; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 
echo '<pre id="hour">' 
    . $row['h'] 
    . '</pre>' 
    ; 

Не знаю, почему вы используете print_r($row,true);. Во-первых, print_r является неправильным использованием для этого случая. true просто захватит вывод print_r($row,true); в переменную, которая не является тем видом использования, которое вы ищете. Более объяснение в the official PHP documentation:

Если вы хотите, чтобы захватить выход print_r(), используйте обратный параметр. Если для этого параметра установлено значение TRUE, print_r() вернет информацию, а не распечатает ее.

Чтобы получить доступ к час, как h, вы бы эхо $row['h'], которые в основном означает, «Доступ к элементу в массиве с именем $row с ключом массива h

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