2013-03-01 4 views
0

EDIT: SOLVED - Как обычно, код ошибки не был связан с подозрительным кодом. Я использовал переменную вместо table_name, и перед запуском запроса она переключилась на неправильную таблицу.mySQL MAX() работает от phpmyadmin, но не от php-скрипта?

Для всех, кого интересуют, все предлагаемые решения, а также исходный код, размещенные ниже, теперь работают на меня. Спасибо за помощь! Извините за мой идиотизм.

ОРИГИНАЛЬНАЯ ПОЧТА: У меня возникла странная ошибка.

Я пытаюсь получить максимальное значение из столбца базы данных MySQL в моем PHP скрипт, используя следующий код:

$q = "SELECT MAX(item_id) AS maxid FROM table_name"; 
$q = mysql_query($q); 
while($row=mysql_fetch_assoc($q)){ 
    $maxItemNum = $row['maxid']; 
} 
echo $maxItemNum; 

Однако $ maxItemNum, что получает отражение это подсчет строк таблицы, а не максимальное значение из столбца «item_id».

Странная вещь, когда я запускаю следующую команду с помощью PHPMyAdmin, я получаю правильный результат (225):

SELECT MAX(item_id) FROM table_name 

Любые идеи, как к этому вопросу? Я столкнулся ...

+0

если это поля AUTO_INCREMENT, и вы НЕ удаляете старые записи, тогда max (id) имеет тенденцию быть тем же самым значением ish, что и count (id). –

+0

@MarcB Поле item_id не является полем auto_increment. По-прежнему не знаю, почему phpmyadmin дал мне правильное значение, но php-скрипт не является .. – IIIOXIII

+0

Вы использовали '$ maxItemNum' ранее в коде? Если этот запрос завершился неудачно из-за плохого 'table_name' или чего-то еще, он все равно будет удерживать более раннее значение. –

ответ

0
echo $maxItemNum = mysql_result(mysql_query("SELECT MAX(item_id) AS maxid FROM table_name LIMIT 1"),0); 

Одна линия хорошая! По крайней мере, для этого (:

+1

NO-ONE-LINE-IS-NOT-GOOD! Никогда не рекомендуется вставлять 'mysql_query()' внутрь 'mysql_result()'. Если запрос не выполняется, 'mysql_result()' получает недопустимый ресурс, и вы сообщаете об ошибках. –

+0

... даже если вы не ожидаете, что возникнет какой-либо запрос для запроса ... –

+0

@oz, не работает. Тот же результат. – IIIOXIII

0

И это:.

$q = "SELECT max(item_id) AS max_value FROM table_name"; 
$q = mysqli_query($q); 
$row=mysqli_fetch_assoc($q) ; //just one set of data 
$maxItemNum = $row['max_value']; 

echo $maxItemNum; 

Это работает для меня .... проверено на WAMP 2.2

Saludos;)

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