Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Определить является ли поле AUTO_INCREMENT

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
KingStar
Отправлено: 08 Мая, 2014 - 18:46:42
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




Здравствуйте друзья мои, встал перед задачей следующего рода
используется класс работы pdo,
имеется метод вставки в таблицу,
возвращает last insert

проблема, если поле не является инкрементом, то и логично возвращает 0
в общем задача в том, чтобы если инкремент - то last insert,
если нет - то количество вставок

что подскажете???
(Добавление)
склоняюсь к тому, что отдельно метод с last insert, и отдельно для результата
может чего не знаю (((


-----
То что программа работает, не означает что она написана правильно!
 
 Top
LIME
Отправлено: 08 Мая, 2014 - 19:03:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




а как это не знать есть ли автоинкремент?
ну допустим есть такая необходимость
но тогда решать проблему надо ближе к её возникновению
но никак не постфактум анализировать результат
например составить карту таблиц можно как конфиг
где есть автоинкремент а где нет?
тут фабрика напрашивается
иначе решения чреваты неожиданными форсмажорами и будут требовать периодических доработок решения в потенциале
короче надо решать проблему поближе к ее сути
например если таблица создается динамически что уже хреново...но допустим...надо при создании решать как ее обрабатывать...например занести в реестр в нужную категорию
тогда и проблем поубавится
(Добавление)
KingStar пишет:
может чего не знаю (((
наверняка
что лучше?
каждый раз решать как обработать анализируя ситуацию и рисковать что рано или поздно ты забудешь поправить обработку когда изменил архитектуру таблицы
или решать обработку при создании изменения и исключить возможность "забыть"
надеюсь не запутал))
(Добавление)
хотяяя...если есть желание костылить почему не глянуть information_schema
 
 Top
KingStar
Отправлено: 08 Мая, 2014 - 19:28:53
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




LIME пишет:
хотяяя...если есть желание костылить почему не глянуть information_schema


ай, да ну Хм
лучше уж разграничить
пару лишних строк погоды не сделают, просто думал мб )))
(Добавление)
ну все ровно спасиб )))


-----
То что программа работает, не означает что она написана правильно!
 
 Top
LIME
Отправлено: 08 Мая, 2014 - 19:31:51
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




таблицы динамически чтоли создаются? айяйяй нехорошо
 
 Top
KingStar
Отправлено: 09 Мая, 2014 - 11:01:27
Post Id



Участник


Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011  
Откуда: Беларусь


Помог: 69 раз(а)




нет, таблицы не динамические, просто класс работы с бд используется, где при вставке нужно получать в случае если имеется инкрементальное поле - то last insert, а если к примеру уникальное id генерируется на стороне php, и заносится в бд, то возвращался результат была вставка или нет (true false)


-----
То что программа работает, не означает что она написана правильно!
 
 Top
EuGen Администратор
Отправлено: 09 Мая, 2014 - 13:32:32
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT
  2.   extra='auto_increment' AS is_auto_increment
  3. FROM
  4.   INFORMATION_SCHEMA.COLUMNS
  5. WHERE
  6.   TABLE_NAME='$table_name'
  7.   AND
  8.   TABLE_SCHEMA='$database'

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 10 Мая, 2014 - 00:28:28
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




EuGen таки нет как выясняется
если я вставлю строку явно указав id то не важно автоинкрементарно оно или нет
тут надо что-то менять в архитектуре приложения
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB