entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Problema con conexion a base de datos en migración en codeIgniter de v2.2 a v3

Buenas, ya terminé de hacer los pasos para la migración de mi proyecto que estaba en CodeIgniter v2.2 a v3 según los pasos que aparecen en este blog Migrar aplicación CodeIgniter y cuando entro a mi sitio web me de un error cuando me hace la llamada a la base de datos. me devuelve:
Fatal error: Call to a member function real_escape_string() on a non-object in D:\wamp\www\admin\system\database\drivers\mysqli\mysqli_driver.php on line 331
mi código en el modelo es:

    class Idiomas_model extends CI_Model {
        public function __construct()
        {
            parent::__construct();
            //$this->load->database();
            $this->load->database('default', TRUE);     
        }

        function get_all($estado = '1'){/*  
        =================================== 
        = Retorna todos los Idiomas en db =
        ===================================
            */          
            # estado 1- Activos, 0- Pasvisos, n- Todos
            echo "entro";

            if (($estado == '0') or ($estado == '1')) {
                $this->db->where('activo',$estado);
            }       
            $query = $this->db->get('idiomas'); 
            $this->db->close(); 
            return $query->result();    

        }  
}   

ERROR DEVUELTO:
===============

A PHP Error was encountered

Severity: Warning

Message: mysql_real_escape_string() expects parameter 2 to be resource, boolean given

Filename: mysql/mysql_driver.php

Line Number: 346

0voto

carlossevi comentado

Revisa lo que dice Leonardo porque ese error indica que no conectó con la base de datos (http://forum.codeigniter.com/thread-501.html).

De todas formas, hay una cosa que no me cuadra: en el mensaje que copias arriba aparece la función real_escape_string() del archivo mysqli\mysqli_driver.php on line 331; sin embargo abajo copias la función
mysql_real_escape_string() del fichero mysql/mysql_driver.php on line 346. La primera es del driver mysqli y la segunda del driver mysql. ¿No es un poco raro?

2 Respuestas

1voto

dairon Puntos17120

Buenas Noches por lo menos en Cuba son las 9:43 pm. Ya resolví el error y en el código fue que cuando termino de ejecutar una query cierro la conexion con $this->db->close(); entonces cuando vuelvo a llamar a otro metodo que accede a la DataBase es cuando me lanza el error que les compartí arriba.

Resultado no puedo cerrar la base de datos, pero no quiero tener la conexión abierta a la base de datos pues solo tengo cinco conexiones.

Acaso la conexión se cerrará sola cuando se termina de ejecutar mi script de php no tengo ni idea y necesito economisar mi conexion al servidor db ??
Saludos Dairon

3votos

Leonardo-Tadei Puntos227320

Dairón,

por el error, parece ser que no lograste conectar a la DB; luego, el 2do parámetro de mysql_realescape_string() en vez de ser un handler a la conexión tiene el booleano "false".

Verificá que se establezca la conexión con la DB primero, y luego veamos si sigue fallando.

0voto

dairon comentado

debe ser esta nueva version de codeigniter, ahora mismo comieno a revisar

0voto

Leonardo-Tadei comentado

Dairón,

salvo que uses conexiones persistentes (y en general no se usan, además de que están deshabilitadas en la mayoría de los proveedores de hosting) las conexiones, variables, archivos abiertos y cualquier recurso existente se libera al finalizar el script PHP... siempre fue así.

0voto

dairon comentado

solo tenía la duda maestro, gracias por todo

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta