Creo que esto me funciona pero tengo ciertas dudas con parte del coidgo
Código PHP:
public function registrarEncuesta($titulo, $cargo, $departamento, $provincia, $distrito, $fecha_enc, $id_candidato)
{
try {
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->_db->beginTransaction(); // iniciar transacción
$a = $this->_db->prepare("INSERT INTO encuestas (id, titulo, id_cargo, id_pais, id_departamento, id_provincia, id_distrito, fecha_encuesta, fecha_registro, usuario_registrador) VALUES (null, :titulo, :cargo, 1, :departamento, :provincia, :distrito, :fecha_enc, now(), '" . Session::get('id_usuario') . "')"
)->execute(array(
':titulo' => $titulo,
':cargo' => $cargo,
':departamento' => $departamento,
':provincia' => $provincia,
':distrito' => $distrito,
':fecha_enc' => $fecha_enc)
);
$lastReciboId = $this->_db->lastInsertId();
if (!$a) {
throw new Exception("ERROR AL INGRESAR LOS DATOS");
} else {
for ($i=0; $i<count($id_candidato); $i++) {
$b = $sql = "INSERT INTO opciones (id, id_encuesta, id_candidato) VALUES (null, :id_encuesta, :id_candidato)";
$statement = $this->_db->prepare($sql);
$statement->execute(array(
':id_candidato' => $id_candidato[$i],
':id_encuesta' => $lastReciboId
));
}
}
if($a && $b) {
$this->_db->commit();
} else {
$this->_db->rollBack();
}
// echo 'Datos insertados correctamente';
} catch (PDOException $e) {
// si ocurre un error hacemos rollback para anular todos los insert
$this->_db->rollBack();
throw $e;
// echo $e->getMessage();
}
}