2013-05-28 2 views
0

Я работаю над проектом, в котором есть одна основная статья, и вы можете приложить к нему много разных статей. Итак, отправьте, я разбил статью на две разные разделы, так как мне нужно, чтобы они представлялись в две разные таблицы.захват последнего последнего id на основе user_name - codeigniter

После отправки первой части, я пытаюсь получить последний отправленный идентификатор на основе имени пользователя, чтобы я мог приложить остальную часть статьи. Если это имеет смысл.

Я пробовал несколько разных вещей, но ничто, кажется, не возвращает этот идентификатор.

Сначала я попробовал insert_id() meathod, но возвращает 0

public function pullLastStoryId($author){ 
    $this->db->where('author', $author); 
    $this->db->insert_id(); 
    $story = $this->db->get('story_tbl'); 
    return $story->result();  
} 

Итак, я также попытался просто захват

public function pullLastStoryId($author){ 
    $story = $this->db->query('SELECT LAST_INSERT_ID() INTO story_tbl;') 
    return $story->result();  
} 

Любая идея-х

ответ

-1

Если вы хотите получить Последний id, ваш путь неправильный. $ this-> db-> insert_id() или etc для активного запроса. Попробуйте это: SELECT id FROM table ORDER BY id DESC LIMIT 1

+2

Основная причина использования последовательностей «auto_increment» и т. Д. Для идентификаторов заключается в том, что БД намного лучше сохраняет целостность. Что бы вы сделали, если кто-то управлял вставкой из отдельного запроса одновременно? – cwallenpoole

0

Непонятно с вопросом. Вы ищете что-то вроде этого?

public function pullLastStoryId(){ 
    $story = $this->db->query('SELECT id from tablename where id = LAST_INSERT_ID()') 
    return $story->result();  
} 

ИЛИ

public function pullLastStoryId(){ 
    $id = $this->db->insert_id(); 
    $this->db->where('id',$id); 
    $story = $this->db->get('story_tbl'); 
    return $story->result();  
} 
+0

Не совсем, я пытаюсь вернуть последний вставленный идентификатор статьи на основе того, кто автор, мое уникальное поле является автором, так как никто не может иметь одно и то же имя_пользователя. – zazvorniki

0

Я предполагаю, что вы говорите внешнего ключа отношения между двумя таблицами. Один из способов сделать это было бы что-то вроде:

$this->db->insert('author',$vals); 
$id = $this->db->insert_id(); 
// do something with ID. 

Из того, что я могу сказать, вы, вероятно, то сделать что-то вроде этого:

$story_row = $this->db->get_where('story_tbl',array('id' => $id)); 

Вы не должны беспокоиться о различных user_name собственности, потому что это будет последний созданный идентификатор. Если вы действительно хотите получить эту строку назад, хотя, вы можете сделать это:

$author_row = $this->db->get_where('author',array('author_id' => $id)); 

Если вам нужно иметь этот идентификатор в другом месте (например, после того, как другая форма представляется), вы можете использовать hidden форму ввод или (это немного более безопасно), вы можете сохранить этот идентификатор в сеансе.

+0

На самом деле это не сработает для меня. Я думаю, вы неправильно поняли мой вопрос. Я ничего не вставляю и не пытаюсь вернуть автора. Я пытаюсь вернуть последнюю вставленную статью на основе имени пользователя автора, чтобы они могли вставить остальную часть статьи. – zazvorniki

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