Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error PDO

Estas en el tema de Error PDO en el foro de PHP en Foros del Web. Hola ha todos como estan veran tengo un problema al realizar una insercion en una tabla que esta dentro de una transaccion aqui mi codigo ...
  #1 (permalink)  
Antiguo 21/04/2016, 15:25
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Error PDO

Hola ha todos como estan veran tengo un problema al realizar una insercion en una tabla que esta dentro de una transaccion aqui mi codigo
Código PHP:
Ver original
  1. public static function registrar_metas($nm_cabecera_data,$nm_detalle_data_do,$nm_detalle_data_cg) {
  2.         try {
  3.             $cnBD = Conexion::getConexion();
  4.             $cnBD->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
  5.             $cnBD->beginTransaction();
  6.             $query_metas = $cnBD->prepare("INSERT INTO metas(jc_usuario_id)VALUES (?);SELECT LAST_INSERT_ID()meta_id");
  7.             $query_metas->bindParam(1,$nm_cabecera_data["nm_usuario"],PDO::PARAM_INT);
  8.             $query_metas->execute();
  9.             $result = $query_metas->fetchAll(PDO::FETCH_ASSOC);
  10.             $query_metas->closeCursor();
  11.             if (isset($result["meta_id"])) {
  12.                 $sql ="INSERT INTO metas_detalles(jc_metas_id,jc_unidad_negocio_id,jc_metas_fecha,jc_metas_monto)VALUES ";
  13.                 if($nm_cabecera_data["nm_unid_do"] == 1){
  14.                     for($ni;$ni<count($nm_detalle_data_do);$ni++){
  15.                         $sql.= "(".$result["meta_id"].",".$nm_cabecera_data["nm_unid_do"].",'".$nm_detalle_data_do[$ni]['nm_fecha']."','".$nm_detalle_data_do[$ni]['nm_monto']."'),";
  16.                     }
  17.                 }elseif($nm_cabecera_data["nm_unid_cg"] == 5){
  18.                     for($n;$n<count($nm_detalle_data_cg);$n++){
  19.                         $sql.= "(".$result["meta_id"].",".$nm_cabecera_data["nm_unid_cg"].",'".$nm_detalle_data_cg[$n]['nm_fecha']."','".$nm_detalle_data_cg[$n]['nm_monto']."'),";
  20.                     }
  21.                 }
  22.                 $sql = substr($sql,0,strlen($sql)-1);
  23.                 $smt = $cnBD->prepare($sql);
  24.                 $smt->execute();
  25.             }
  26.             $cnBD->commit();
  27.         } catch (PDOException $e) {
  28.             echo $e->getMessage();
  29.             $cnBD->rollback();
  30.         }
  31.     }
  32. }
cuando lo ejecuto me sale este erro
Código PHP:
Ver original
  1. SQLSTATE[HY000]: General error
no se en que parte estoy mal ayudaaaa por favorrr
  #2 (permalink)  
Antiguo 21/04/2016, 15:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error PDO

¿Mínimo hiciste una búsqueda con esos términos antes de abrir el tema?

SQLSTATE[HY000]: General error
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 21/04/2016, 15:37
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Error PDO

Obviamente pero he reivaso pero no veo algo concreto ya que mi caso es un poco distinto al que voy viendo por tal motivo lo publique tal vez ha alguien ya le ha sucedido lo mismo
  #4 (permalink)  
Antiguo 21/04/2016, 15:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error PDO

La cosa es, por decir algo, que el problema dudo que sea el código PHP en sí.

Es decir, ¿ya imprimiste el SQL que genera y lo ejecutaste directamente en tu base de datos?

Porque si el problema es la consulta de SQL en sí entonces no entiendo cómo pretendes "solucionar tu problema" usando código PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 21/04/2016, 17:27
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Error PDO

Gracias por tu sugerencia al final lo solucione asi
Código PHP:
Ver original
  1. public static function registrar_metas($nm_cabecera_data,$nm_detalle_data_do,$nm_detalle_data_cg) {
  2.         try {
  3.             $cnBD = Conexion::getConexion();
  4.             $cnBD->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
  5.             $cnBD->beginTransaction();
  6.             $query_metas = $cnBD->prepare("INSERT INTO metas(jc_usuario_id)VALUES (?)");
  7.             $query_metas->bindParam(1,$nm_cabecera_data["nm_usuario"],PDO::PARAM_INT);
  8.             $query_metas->execute();
  9.             $result = $cnBD->lastInsertId();
  10.             $query_metas->closeCursor();
  11.             if (isset($result)) {
  12.                 $sql ="INSERT INTO metas_detalles(jc_meta_id,jc_unidad_negocio_id,jc_metas_fecha,jc_metas_monto)VALUES ";
  13.                 if($nm_cabecera_data["nm_unid_do"] == 1){
  14.                     for($ni=0;$ni<count($nm_detalle_data_do);$ni++){
  15.                         $sql.= "(".$result[0].",".$nm_cabecera_data["nm_unid_do"].",'".date("Y-m-d",strtotime($nm_detalle_data_do[$ni]['nm_fecha']))."','".$nm_detalle_data_do[$ni]['nm_monto']."'),";
  16.                     }
  17.                 }if($nm_cabecera_data["nm_unid_cg"] == 5){
  18.                     for($n=0;$n<count($nm_detalle_data_cg);$n++){
  19.                         $sql.= "(".$result[0].",".$nm_cabecera_data["nm_unid_cg"].",'".date("Y-m-d",strtotime($nm_detalle_data_cg[$n]['nm_fecha']))."','".$nm_detalle_data_cg[$n]['nm_monto']."'),";
  20.                     }
  21.                 }
  22.                 $sql = substr($sql,0,strlen($sql)-1);
  23.                 $smt = $cnBD->prepare($sql);
  24.                 $smt->execute();
  25.             }
  26.             $cnBD->commit();
  27.         } catch (PDOException $e) {
  28.             echo $e->getMessage();
  29.             $cnBD->rollback();
  30.         }
  31.     }
estaba como loco por este problema pero lo pude solucionar

Etiquetas: fecha, pdo, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:51.