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

3votos

Migrar de localhost a servidor con PHP 7

Buenas tardes, estoy migrando una web realizada desde 0 con PHP7 (localhost) y la he subido a un servidor para ir haciendo pruebas.
En localhost funciona perfectamente pero en el servidor nada.
Al principio del código he puesto esta línea: error_reporting(E_ALL); para ver de donde viene el fallo y lo que me muestra el error es el siguiente: Notice: Undefined variable: equipos in /homepages/46/d691671363/htdocs/web/daos/EquipoDAO.php on line 35
El código del siguiente archivo es el siguiente:

<?php
    require_once ($_SERVER['DOCUMENT_ROOT']. '/web/models/Equipo.php');
    require_once ($_SERVER['DOCUMENT_ROOT']. '/web/config/database.php');

    class EquipoDAO{
        public function listarEquipos(){
            /* Comprobamos la conexión a la BBDD */
            $db = new DataBase();

            if($db->conectar()) {
                $sql = "SELECT * FROM Equipo WHERE liga = 'ibiza'";
                $result = mysqli_query($db->conexion,$sql);

                if($result) {
                    // Si hay registros
                    if(mysqli_num_rows($result) !== 0) {
                        while($row = mysqli_fetch_array($result)) {
                            $equipo = new Equipo();

                            $equipo->setId($row['id']);
                            $equipo->setNombre($row['nombre']);

                            $equipos[] = $equipo;
                        }   
                    }else{
                        $equipos = null;
                    }
                }

                $db->desconectar();
            } else {
                echo "Error al conectar con la base de datos<br />";
            }

            return $equipos; //Aquí me está dando el error
        }

    }
?>

¿A qué es debido el error?

2 Respuestas

1voto

Leonardo-Tadei Puntos227320

Hola Daniel,

el problema que tenés es que al ser PHP7 más estricto que PHP 5.x, lo que en tu entorno de desarrollo es un Warning acá es un Error...

La falla en tu código es que cuando la query no se ejecuta por algún motivo, el vector equipos[] nunca se define y por eso falla al querer devolverlo en el return.

Bastaría con definir al principio de la función:

...
equipos = null;
...

para que al usarlo ya exista la variable.

Saludos cordiales

0voto

danielreales7 comentado

Perfecto!! Ahora no me muestra los errores pero no me obtiene los datos de la BD.
¿Tengo que modificar algo de algún archivo PHP más? Por ejemplo lo de arriba es el controlador, el archivo de conexión es el siguiente:

<?php
    require_once ($_SERVER['DOCUMENT_ROOT']. '/web/config/config.php');

    class Database{
        public $conexion;
        public $dbRegistro;
        private $db;

        public function conectar(){
            /* Conexión con MySQL */
            $this->conexion = mysqli_connect(host, username, password);

            /* Para las tildes */
            mysqli_query($this->conexion,"SET NAMES 'utf8'");

            if (!$this->conexion){
                DIE("Error al conectar con MySQL: " . mysqli_error());
            }

            /* Conexión con la BBDD */
            $dbRegistro = mysqli_select_db($this->conexion, dbname);
            $this->db = mysqli_select_db($this->conexion, dbname);
            if (!$this->db){
                DIE("Error al conectar con la base datos: " . dbname);
            }

            return true;
        }

        public function desconectar(){
            if ($this->conexion) {
                mysqli_close($this->conexion);
            }
        }
    }
?>

Y en el archivo config.php:

<?php
    define('host','xxxxx');
    define('username','xxxxx');
    define('password','xxxxx');
    define('dbname','xxxx');
?>

¿Algo me estoy dejando? Ahora mismo no me da ningún error solamente que no me muestra la información.

0voto

Umarumm Puntos1640

mira tu archivo de conexion que este bien pues al subirlo a un sitio tendras que cambiar donde dice localhost por el nombre que te proporcionaron igual el usuario y contraseña

2votos

danielreales7 comentado

Está modificado el archivo correctamente, es lo extraño de porque no me funciona.

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