2013-11-28 3 views
0

У меня вопрос. Я не могу получить последнюю вставленную запись/идентификатор из моей базы данных MySQL/таблицы. Я хочу вернуть последний вставленный id из столбца tag_id, но я ничего не получаю. Кстати, я использую DBO. Я пробовал как «mysql_insert_id», так и «lastInsertId», но не успел.Я не могу получить последнюю вставленную запись/id из MySQL

Моя таблица базы данных выглядит следующим образом:

Имя таблицы: gitags_tags

tag_id | name 
----------+--------- 
    437 | 2011 
    438 | 2012 
    439 | 2013 
    440 | new 

Мой PHP выглядит следующим образом (в данном случае я хочу, чтобы вернуть '440'):

/* 
* Insert the new tagname in the database in the table 'gitags_tags' 
*/ 
$query = "INSERT INTO gitags_tags (`name`) VALUES ('".$new_tagname."')"; 
$db->setQuery($query); 

if (!$db->query()) { 
    echo "Something went wrong \n"; 
    echo $query . "\n"; 
    exit; 
} 

// Neither of these two work ... 
echo mysql_insert_id(); 
echo $db->lastInsertId('tag_id'); 

Любая помощь очень ценится.

+0

Это должен быть вопрос Joomla. Пожалуйста, [* прочитайте это *] (http://www.webmasterworld.com/php/3600870.htm). –

+0

Если вы пытаетесь получить данные из базы данных, пожалуйста, покажите вам запрос 'select', а не ваш запрос' insert'. Прочтите документацию Joomla по запросам базы данных кодирования, используя стандарты Joomla! http://docs.joomla.org/Selecting_data_using_JDatabase .... и .... http://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase – Lodder

+0

попробуйте этот var_dump ($ db-> mysql_insert_id()); –

ответ

1

Чтобы получить последнюю вставленную запись, вы можете использовать это:

$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 

$query->select($db->quoteName('tag_id')) 
->from($db->quoteName('gitags_tags')) 
->order($db->quoteName('tag_id') . ' DESC'); 

$db->setQuery($query); 
$result = $db->loadResult(); 

echo $result; 
-1

убедитесь, что tag_id установлен как первичный ключ и приращение.

/* 
* Insert the new tagname in the database in the table 'gitags_tags' 
*/ 
$query = "INSERT INTO gitags_tags (`name`) VALUES ('".$new_tagname."')"; 
$db->setQuery($query); 

echo mysql_insert_id(); 
echo $db->lastInsertId('tag_id'); 

//Use select query and echo this record with this tag_id. 
0

Он должен работать, повторяя новый SQL-запрос с помощью DESC и LIMIT. Как это:

SELECT tag_id FROM gitags_tags ORDER BY tag_id DESC LIMIT 1 
3

Вы используете неверную функцию Joomla DB, используйте echo $db->insertid(); вместо этого.

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