mysql — Php Pdo — Выбор последней вставленной

у меня есть запросы «вставить в» и «выбрать» вместе в одном запросе.

$_SESSION['LoginUID']=1;
$Mesaj='ffdd';
$Ek=12;
$cid=112;
$Kaydet=$db->query("Insert Into Reply (Kimden,Mesaj,Ek,cid)
Values (".$_SESSION['LoginUID'].",'$Mesaj',$Ek,$cid);
select r_id,KayitZaman from Reply
where r_id=LAST_INSERT_ID();")
->fetch(PDO::FETCH_ASSOC);

Но я не могу выбрать последнюю вставленную строку. Должно вернуться вот так
m_id  KayitZaman       
16      1413130807000

Как я могу сделать это в одном запросе? Или другим способом.

-1

Решение

Вы не можете запустить два запроса одновременно, только один одновременно

После вставки выполните команду select:

$stmt = $db->query('select r_id,KayitZaman from Reply where r_id=LAST_INSERT_ID()');

или вы можете использовать встроенную функцию для передачи последнего вставленного идентификатора

$stmt = $db->prepare('select r_id,KayitZaman from Reply where r_id= ?');
$stmt->execute(array($db->lastInsertId()));

Если вы хотите сделать все сразу, создайте хранимую процедуру.


РЕДАКТИРОВАТЬ:

DELIMITER //
CREATE PROCEDURE sp_insert_get_reply(IN `p_Kimden`,
IN `p_Mesaj`,
IN `p_Ek`,
IN `p_cid`)
BEGIN
INSERT INTO `Reply` (`Kimden`, `Mesaj`, `Ek`, `cid`)
VALUES (p_Kimden, p_Mesaj, p_Ek, p_cid);

SELECT `r_id`, `KayitZaman`
FROM Reply WHERE r_id=LAST_INSERT_ID()
END //
DELIMITER ;

затем вызовите функцию из PDO:

$stmt = $db->prepare('CALL sp_insert_get_reply(?, ?, ?, ?)');
$stmt->execute(($_SESSION['LoginUID'], $Mesaj, $Ek, $cid));
1

Другие решения

Вы должны попробовать выдать insert в PDO exec() позвоните и проследите за select в query вызов. Вы все еще можете использовать LAST_INSERT_ID() в вашем select запрашивать и сохранять целостность данных.

Если по какой-то причине вы должен сделать два оператора в одном запросе от вашей программы, вы можете использовать функцию нескольких операторов mysqli или вы можете написать хранимую процедуру.

0

По вопросам рекламы [email protected]