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 :: query_insert_id не работает

 PHP.SU

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


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

> Описание: Всё время возвращает 0
SiT3D
Отправлено: 22 Мая, 2013 - 22:51:33
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2013  


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




В общем учусь, пытаюсь сделать форум свой. Столкнулся с такой проблемой. Темы хранятся в одной таблице, а все сообщения по темам в другой. В строке в БД с сообщениями, есть ID темы к которой они принадлежат. Выводится всё нормально. Но когда создаю новую тему, не могу получить её новый ID чтобы вставить туда первое сообщение которое пишет тот кто создаёт эту тему. Функция query_insert_id всё время возвращает 0. Автоинскримент в поле ID темы стоит.

CODE (htmlphp):
скопировать код в буфер обмена
  1.  <?php
  2.  
  3.  $URL="forum.php";
  4.          header ("Location: $URL");
  5.         include_once('start.php');
  6.      include_once('FunctionsBD.php');
  7.     if(strlen ($_POST['MSS'])>0) {
  8.          if($_SESSION['UsNa'] == '') {
  9.              $EName = 'Гость';
  10.          }else{
  11.              $EName = $_SESSION['UsNa'];
  12.          }
  13.          $Tnn = $_POST['TN'];
  14.          $EMess = $_POST['MSS'];
  15.          $EDate = time();
  16.          function CrNewTema($Tnn,$EName,$EMess,$EDate){      
  17.              global $mysqliii;
  18.              ConnectBD();
  19.              $mysqliii->query("INSERT INTO `forumbd` (`TName`,`Autor`,`LastAutor`,`Message`,`TimeCreate`,`TimeLast`) VALUES ('$Tnn','$EName','$EName','$EMess','$EDate','$EDate')  ");
  20.              //$mysqliii->query("SELECT LAST_INSERT_ID() FROM `forumbd` ");
  21.              //$mysqliii->query("INSERT INTO `temamesstable` (`UserId`,`TemaId`,`TextMess`,`DateThText`) VALUES ('$EName','$lt','$EMess','$EDate')");
  22.              CloseDB();
  23.              }
  24.              CrNewTema($Tnn,$EName,$EMess,$EDate);      
  25.          
  26.      }
  27.  
  28. ?>


Это последний вариант кода на которм я забил искать решения, если строчка " //$mysqliii->query("SELECT LAST_INSERT_ID() FROM `forumbd` ");" это не беда, с верной строчкой тоже возвращает 0, во всех вариантах написания.

(Отредактировано автором: 22 Мая, 2013 - 22:54:38)

 
 Top
Dark-def
Отправлено: 22 Мая, 2013 - 23:02:40
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




CODE (sql):
скопировать код в буфер обмена
  1. SELECT id FROM `forumbd` ORDER BY id DESC LIMIT 0,1


-----
while(true); - // И пусть весь мир подождет
 
 Top
DlTA
Отправлено: 23 Мая, 2013 - 00:25:17
Post Id



Постоянный участник


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


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




Dark-def пишет:
LIMIT 0,1
LIMIT 1;
 
 Top
SiT3D
Отправлено: 23 Мая, 2013 - 01:26:21
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2013  


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




А напишите как должно выглядеть в коде, а то чёт попробовал один фиг 0 даёт. А то я ещё тугодум в этом деле. Но вроде всё правильно подставил, потому что хотя бы 0 возвращало. По стандарту то там null

(Отредактировано автором: 23 Мая, 2013 - 02:05:41)

 
 Top
SiT3D
Отправлено: 23 Мая, 2013 - 16:35:47
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Май 2013  


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




Всё друг помог, дело было в том что я объект получал через класс, а там свои функции для получения id
 
 Top
OrmaJever Модератор
Отправлено: 23 Мая, 2013 - 18:16:47
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




после запроса на добавление в $mysqli->insert_id будет хранится последний id, и совсем незачем снова делать выборку.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Dark-def
Отправлено: 23 Мая, 2013 - 21:53:51
Post Id



Частый гость


Покинул форум
Сообщений всего: 169
Дата рег-ции: Дек. 2012  
Откуда: Украина, Запорожье


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




OrmaJever , ну то понятно )
DlTA пишет:
Dark-def пишет:
LIMIT 0,1
LIMIT 1;

в обоих случаях будет правильно


-----
while(true); - // И пусть весь мир подождет
 
 Top
LIME
Отправлено: 23 Мая, 2013 - 22:24:57
Post Id


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


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


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




троицу любит))
(Добавление)
Цитата:
For compatibility with PostgreSQL
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB