2016-09-27 61 views
1

我不明白爲什麼這個PDO語句將不會保存任何東西到數據庫:PDO->的execute()語句不會工作,語法正確

  //guardamos en base   
      $conectar2 = new PDO('mysql:host='.HOST.'; dbname='.DATABASE.'; charset=utf8', USER, PASS); 
      $conectar2->beginTransaction(); 
      $agregarData = $conectar2->prepare(" 
       UPDATE mensajes 
       SET estadoMensaje = ?, 
        datosMensaje = ? 
       WHERE mensajeID = ?; 
      "); 
      $agregarData->bindParam(1, $estadoMensaje); 
      $agregarData->bindParam(2, $data); 
      $agregarData->bindParam(3, $mensajeID);    
      $agregarData->execute(); 

      echo '<br>Mensaje actualizado.'; 

我的錯誤日誌不會說任何東西。有什麼地方我可能錯過了?

我已經嘗試過將sql語句手動輸入到mysql,它的工作原理。

我回應了變量,它們不是空的(它們都是字符串)。

連接確實有效。

我錯過了什麼?

+0

嘗試測試錯誤?執行返回false嗎? 「錯誤」屬性告訴你什麼? –

+2

你是否在pdo中啓用了異常?如果沒有,那麼你只是假設沒有任何錯誤,並且不檢查所有這些調用的返回值。默認情況下,PDO通過返回布爾值false來失敗。 –

+3

只是好奇,爲什麼當你只執行一個語句時使用了一個事務? –

回答

6

你開始了一個交易,但忘了提交。

添加:

$conectar2->commit(); 

發出您的查詢就會解決這個問題了。

如果沒有其他查詢正在發佈,您可以考慮全部刪除該事務。

0

「我可能錯過了什麼地方?」

是的。

$conectar2->beginTransaction(); 

這部分需要刪除。