Не работает метод класса генерации нового id для таблицы
/**
* функция возвращает значние id
*/
public function GenID($seqname, $prefix = '')
{
$this->sql = 'SELECT MAX('.$prefix.'id) FROM '. $this->escapeString($seqname);
$this->res = $this->Execute($this->sql, true);
if(mysql_num_rows($this->res) > 0)
{
$this->res = mysql_fetch_assoc($this->res);
return $this->res[$prefix.'id']+1;
}
else return 1;
}
Метод Execute - обертка mysql_query
Если выставить в в обертке вывод запроса, то вроде бы все должно работать нормально! Это запрос при непосредственном внесении в php-my-admin делает нормальную выборку!
Может проблема что я не могу извлечь ЧИСЛО из результата запроса!
Посоветуйте как мне быть! :)
Спустя 7 минут, 34 секунды (21.12.2011 - 15:24) m4a1fox написал(а):
kent666
Чет не пойму я. Вы же выбираете максимальное значение MAX. Он и должен быть один. А второго там не будет, или я ошибаюсь?
Чет не пойму я. Вы же выбираете максимальное значение MAX. Он и должен быть один. А второго там не будет, или я ошибаюсь?
Спустя 1 минута, 35 секунд (21.12.2011 - 15:25) kent666 написал(а):
m4a1fox все правильно!
Но как извлечь это число из результата запроса
Но как извлечь это число из результата запроса
Спустя 47 секунд (21.12.2011 - 15:26) sharki написал(а):
Читай про ALIAS
Спустя 44 секунды (21.12.2011 - 15:27) kent666 написал(а):
У меня наверно не корректно работает блок
if(mysql_num_rows($this->res) > 0)
{
$this->res = mysql_fetch_assoc($this->res);
return $this->res[$prefix.'id']+1;
}
Спустя 4 минуты, 24 секунды (21.12.2011 - 15:31) m4a1fox написал(а):
kent666
Цитата |
Но как извлечь это число из результата запроса |
Теперь понятнее.... то есть по сути должна быть цифра а ее нет! Получается как с сусликом.
- Ты суслика видишь?
- Нет!
- И я не вижу! А он есть!
Спустя 2 минуты, 58 секунд (21.12.2011 - 15:34) kent666 написал(а):
m4a1fox
Что то я не могу понять при чем тут ALIAS?
Что то я не могу понять при чем тут ALIAS?
Спустя 1 минута, 46 секунд (21.12.2011 - 15:36) sharki написал(а):
Мдец, как же вы любите разводить холивары
public function GenID($seqname, $prefix = '')
{
$this->sql = 'SELECT MAX('.$prefix.'id) AS `max` FROM '. $this->escapeString($seqname);
$this->res = $this->Execute($this->sql, true);
if(mysql_num_rows($this->res) > 0)
{
$max_num = mysql_fetch_assoc($this->res);
return $max_num['max']+1;
}
else return 1;
}
Спустя 9 минут, 10 секунд (21.12.2011 - 15:45) kent666 написал(а):
sharki спасибо! Все заработало. Хотя если честно не понимаю зачем надо было добавлять алиас к id.
Спустя 1 минута, 53 секунды (21.12.2011 - 15:47) sharki написал(а):
kent666
Чтобы получить конкретное поле, для удобства в данном случае.
Ты хоть понял в чем твоя ошибка была?
Чтобы получить конкретное поле, для удобства в данном случае.
Ты хоть понял в чем твоя ошибка была?
Спустя 7 минут, 49 секунд (21.12.2011 - 15:55) kent666 написал(а):
ну частично.
А без алиаса нельзя было?
Я же выбрал именно 1 ячейку с максимальным id
и обращался к именно к ней!
А без алиаса нельзя было?
Я же выбрал именно 1 ячейку с максимальным id
и обращался к именно к ней!
Спустя 34 секунды (21.12.2011 - 15:55) sharki написал(а):
kent666
Это не основная ошибка
Это не основная ошибка
Спустя 3 минуты, 39 секунд (21.12.2011 - 15:59) kent666 написал(а):
А какая основная.
Эта?
$this->res = mysql_fetch_assoc($this->res);
Эта?
Спустя 6 минут, 31 секунда (21.12.2011 - 16:05) sharki написал(а):
Ага, вообще это говнокод, ибо все РАБОЧИЕ переменный надо создавать и инициализировать непосредственно перед их использованием, т.к в будущем ты будет сто тыщ раз листать код в поисках той самой переменной, а может где-то её уже изменили.
Спустя 6 минут, 6 секунд (21.12.2011 - 16:12) kent666 написал(а):
:D
Вообще то у меня изначально была отдельная переменная!
$this->row
Просто я уже шаманил над этим методом столько что менял ее несколько раз!
В первоначальном варианте с
У меня класс все равно не работал.
проблема решилась когда я добавил алиас
Вообще то у меня изначально была отдельная переменная!
$this->row
Просто я уже шаманил над этим методом столько что менял ее несколько раз!
В первоначальном варианте с
$this->row = mysql_fetch_assoc($this->res);
У меня класс все равно не работал.
проблема решилась когда я добавил алиас
Спустя 27 минут, 23 секунды (21.12.2011 - 16:39) sergeiss написал(а):
Я вот что не понял...
Цитата (kent666 @ 21.12.2011 - 16:16) |
Посоветуйте как мне быть! |
Почему никто не посоветовал ЗАБЫТЬ про этот