2012-05-18 1 views
0

Мне нужно получить полный запрос с заполненными значениями после успешного выполнения запроса (в основном я хочу запрос строка с вопросительными знаками в запросе удалена и заменена соответствующими значениями), чтобы я мог использовать ее для ведения журнала транзакций.В PHP + PDO получить информацию о последнем запрошенном запросе или заполнить вопросительные знаки в запросе соответствующими записями

ниже строки кода, которые я использую

$stmt1 = $dbh->prepare("INSERT INTO announcements(id,routeID,ServiceAdvisoryID,ServiceAdvisoryDetailsId) 
VALUES (?,?,?,?)"); 
     $stmt1->execute(array($aid,$route,$anctype,$announcementid)); 

запрос, используемый для регистрации сделки является

$transactionText = "INSERT INTO announcements(id,routeID,ServiceAdvisoryID,ServiceAdvisoryDetailsId) VALUES (?,?,?,?)"; 
$stmt2 = $dbh->prepare("insert into transactionLog_tbl(userName,transactionTypeId,transactionTime,transactionText)values(?,?,?,?)"); 
      $stmt2->execute(array($_SESSION['username'],1,date("y.d.m"),$transactionText)); 

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

или еще

Могу ли я получить последнюю выполненную ROW с помощью PDO. Я знаю, что мы можем получить ID, но cam мы также получаем полный ряд строк?

Любая помощь была бы принята с благодарностью.

+1

Взгляните на ответы на этот вопрос: http://stackoverflow.com/questions/2411182/how-to-debug-pdo-database-queries; есть некоторые сведения, которые могут помочь. –

ответ

2

Если вы используете MySQL, вы можете войти в систему, и они (скорее всего) будут иметь полный оператор SQL. Это связано с тем, что PDO по умолчанию эмулирует готовит и фактически отправляет полностью построенные строки SQL на сервер MySQL. Из manual's PDO::setAttribute page:

PDO :: ATTR_EMULATE_PREPARES Включает или отключает эмуляцию подготовленных заявлений. Некоторые драйверы не поддерживают собственные подготовленные операторы или имеют ограниченную поддержку для них. Используйте этот параметр, чтобы заставить PDO либо всегда эмулировать подготовленные операторы (если TRUE), либо попытаться использовать подготовленные операторы (если FALSE). Он всегда будет возвращаться к эмуляции подготовленного оператора, если драйвер не может успешно подготовить текущий запрос .

Команда разработчиков PHP заявляет, что причиной этого является то, что эмуляция выполняется намного быстрее в относительно старых версиях MySQL, которые все еще находятся на большинстве стеков LAMP. По умолчанию это поведение по умолчанию изменится, так как все больше людей используют более новые версии MySQL + родного драйвера.

В противном случае вы можете просто построить полный SQL самостоятельно, так как у вас уже есть оператор и параметры.

+0

Спасибо за ответ @webbiedave .. да, я могу его построить ... но проблема в том, что я делаю это в ОГРОМНОМ количестве страниц .. Да, я использую MySQL .. Я не уверен, как мы можем получить выполненный запрос с значениями, заполненными вопросительными знаками –

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