PDO-> execute()语句不起作用,并且在语法上是正确的

时间:2016-09-27 15:48:43

标签: php mysql pdo

我无法理解为什么这些PDO语句不会将任何内容保存到数据库中:

          //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中,但是它可以工作。

我已经回应了变量并且它们不是空的(它们都是字符串)。

连接确实有效。

我错过了什么?

2 个答案:

答案 0 :(得分:6)

您开始了一项交易,但忘了提交。

添加:

$conectar2->commit();
发出查询后

将解决问题。

如果没有发出其他查询,您可以考虑完全删除该事务。

答案 1 :(得分:0)

  

&#34;我可能遗漏的任何不合适的地方?&#34;

$conectar2->beginTransaction();

此部分需要删除。