2013-04-12 2 views
0

У меня есть следующие вставки заявленияПрочитайте последнюю вставленную строку

global $dbUser; 
global $dbPW; 
$query = "INSERT INTO comments (post_id, text) VALUES (:post_id,:text)"; 
$db = new PDO('mysql:host=localhost;dbname=test', $dbUser, $dbPW); 
$statement = $db -> prepare($query); 
$statement -> execute(array(':post_id' => $postId, ':text' => $text)); 

Я хочу, чтобы прочитать и вернуть вставленную строку в той же самой транзакции.

Я знаю, что могу получить

$ db-> lastInsertId ('ID')

, но и я знаю, как сделать сделку в PDO, но я не могу найти как это сделать с помощью подготовленного заявления, как указано выше (что является предпочтительным методом для целей безопасности IIRC).

Спасибо!

+0

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

+0

@YourCommonSense ok thanks, что означает «$ db = new PDO (« mysql: host = localhost; dbname = test », $ dbUser, $ dbPW); будет инициализирован один раз (скажем, в моем глобальном файле include) и повторно используется как глобальная переменная? –

+0

да, точно. просто сделайте это 'global $ db;' в функции. В противном случае вы будете спамить сервер БД с несколькими подключениями от выполнения одного сценария. –

ответ

1

Здесь не нужны транзакции.
Просто запустите $ db-> lastInsertId(), если вам нужен автогенерированный идентификатор - вот и все.

+0

Мне нужна вся запись не только для этого ID ... –

+0

Зачем вам это нужно, если у вас уже есть все данные? –

+0

в этом случае это правда, в других случаях у меня есть формулы в select-statement, которые я не хочу иметь в других частях кода снова. Спасибо за ваш ценный вклад! –

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