|
|
|
| Граждане, объясните, пожалуйста, дилетанту, в каком виде здесь вообще поступает ответ. Поскольку запрашивается максимальное значение поля (с данными типа INT), то, по-моему разумению, и ответ должен содержать число? Попытки обработать результат функциями типа mysql_fetch_array, mysql_fetch_row, mysql_fetch_object - приводят к сообщению о некорректном аргументе. Что и понятно - это ведь не массив, да? Как же его вывести, использовать и проч.?
Только что проверил через gettype - оказалось, запрос возвращает значение типа boolean, и, что самое приятное - false. Стоит, наверное, привести здесь сам код запроса:
$connect=mysql_connect("localhost", "root", "");
mysql_select_db("ck", $connect);
$str="SELECT MAX NNUM FROM news";
$result=mysql_query($str, $connect);
В таблице есть поле NNUM, в нем есть данные типа INTEGER, их значение - от 0 до 2. Почему же возвращается false? | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 10:07)
| | Мммммм..... Функцию МАХ следует использовать таким способом.
SELECT MAX(nnum) AS max_num FROM news
|
И она соответственно будет в результирующем массиве
$connect=mysql_connect("localhost", "root", "");
mysql_select_db("ck", $connect);
$str="SELECT MAX(nnum) AS max_num FROM news";
$result=mysql_query($str, $connect);
$f=mysql_fetch_array($result);
echo $f[max_num];
|
| |
|
|
|
|
|
|
|
для: napTu3aH
(22.10.2005 в 11:25)
| | Нет, то же самое - некорректный аргумент функции mysql_fetch_array | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 11:34)
| | Попробуйте вот такой вариант:
$hostname="localhost";
$username="root";
$password="";
$dbname="ck";
mysql_connect($hostname, $username, $password);
mysql_select_db("$dbname");
$str="SELECT MAX(nnum) FROM news";
$result=mysql_query($str);
$f=mysql_fetch_array($result);
echo $f[0];
|
P.S. да и первый вариант тоже работает я пропустил одинарные кавычки
| |
|
|
|
|
|
|
|
для: napTu3aH
(22.10.2005 в 11:49)
| | К сожалению, нет, парТиЗаН. У меня ни один вариант не работает. Та же ошибка возвращается. | |
|
|
|
|
|
|
|
для: napTu3aH
(22.10.2005 в 11:25)
| | Исправьте код
<?php
$connect=mysql_connect("localhost", "root", "");
mysql_select_db("ck", $connect);
$str="SELECT MAX(nnum) AS max_num FROM news";
$result=mysql_query($str, $connect);
$f=mysql_fetch_array($result);
echo $f[max_num];
?>
|
на
<?php
$connect=mysql_connect("localhost", "root", "");
mysql_select_db("ck", $connect);
$str="SELECT MAX(nnum) AS max_num FROM news";
$result=mysql_query($str, $connect);
if(!$result) exit("Ошибка - ".mysql_error());
$f=mysql_fetch_array($result);
echo $f[max_num];
?>
|
Что-нибудь дополнительно выводится в окно браузера? | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 12:41)
| | Здравствуйте, cheops. Очень рад Вас видеть. Пользуясь случаем, хочу выразить признательность. Ваша книга стала моей настольной.
Вот сообщение об ошибке:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(NNUM) AS max_num FROM news' at line 1 | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 12:57)
| | Хм... да вроде абсолютно чистый запрос, русских символов нет... а почему в сообщении об ошибке NNUM большими буквами, а в примере маленькими, запрос выглядит именно так? И какая версия MySQL используется?
PS Спасибо за добрый отзыв о книге :) | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 13:12)
| | Буквы на самом деле большие, и в своих запросах я ставил такие же. Версия, кажется, 4.0.25. | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 13:21)
| | cheops, если можно - еще вопрос. Почему в поле с заданным типом TINYTEXT записывается ограниченное число знаков (246). Как этого избежать? Мне, возможно, потребуется заносить туда тексты в десятки тысяч знаков. | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 13:24)
| | Поля с типом TINYTEXT ограничены 255-ю знаками. Если вы будете использовать записи больше этой длины назначайте тип TEXT или LONGTEXT. | |
|
|
|
|
|
|
|
для: napTu3aH
(22.10.2005 в 13:33)
| | Чтобы долго не рыться в справочниках - Вы не могли бы указать, как изменить тип данных для существующего поля? Спасибо. | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 13:35)
| | Для изменений типа, названия полей используют функцию "ALTER TABLE"
ALTER TABLE 'table' CHANGE 'somename' 'somename' LONGTEXT
|
table - имя таблицы
somename - название поля, если указать другое - переименовывает поле. | |
|
|
|
|
|
|
|
для: napTu3aH
(22.10.2005 в 13:47)
| | Спасибо. Все получилось. | |
|
|
|
|
|
|
|
для: ck
(22.10.2005 в 13:24)
| | 256 если быть точным, это ограничение типа, так как под адресацию используется только один байт, если вам нужно больший объём информации, испльзуйте тип TEXT (64 Кб), MEDIUMTEXT (16 Мб) или LONGTEXT (4 Gb)
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=1436 | |
|
|
|
|
|
|
|
для: cheops
(22.10.2005 в 12:41)
| | Интересно узнать, в чем здесь дело, на будущее. В принципе, я, конечно, уже прописал определение максимального значения средствами PHP. Но хочется понять, что же было не так. | |
|
|
|