Soporte » Plugins y Hacks » Conectar a base de datos MySQL externa con php desde shortcode

  • Hola de nuevo compañeros! Ante todo, las gracias por adelantado por vuestra ayuda.
    He creado un shortcode que contiene código PHP y que realiza una conexión a una base de datos sql remota (fuera de wordpress). Lo que pretendo es traer unos datos que me hacen falta para mostrarlos en las paginas de wordpress correspondientes. El código lo he probado en un editor externo y funciona, consigue conectar con la base de datos sql remota y da ‘Conexión exitosa’. Pero aquí en wordpress nunca llega a conectar y da el siguiente error ‘Conexión fallida: Can’t connect to MySQL server on ‘db4free.net’ (111 «Connection refused»)’
    El código que estoy utilizando en el shortcode es el siguiente:

    <?php
    $dbServerName = "db4free.net";
    $dbUsername = "usuario";
    $dbPassword = "contraseña";
    $dbName = "nombrebasededatos";
    
    // create connection
    $conn = new mysqli($dbServerName, $dbUsername, $dbPassword, $dbName);
    
    // check connection
    if ($conn->connect_error) {
        die("Conexión fallida: " . $conn->connect_error);
    }
    echo "Ehorabuena!!! Has conectado con la base de datos correctamente.";
    ?>

    No se si WordPress viene de alguna manera ‘capado’ para que no se puedan establecer conexiones remotas con otras bases de datos mediante código o es algo que se me escapa. Pero ya os digo que el codigo que os he puesto funciona, puesto que lo he comprobado mediante un editor en linea y consigue conectar con la base de datos. (He sustituido los datos privados de la base de datos para la conexión, por seguridad).
    A ver si alguien sabe a que puede deberse el que no pueda conectar.
    Muchas gracias. Un saludo.

    Nota: Los shortcode los creo a través de un plugin llamado ‘Insert PHP Code Snippet’, y ahí meto el código en php. Después ya los inserto en cualquier pagina que necesite mediante el shortcode que me ha asignado el plugin. Por ahora no me había dado ningún problema.

    • Este debate fue modificado hace 4 meses, 2 semanas por bigdatadestroy.
    • Este debate fue modificado hace 4 meses, 2 semanas por bigdatadestroy.
Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • Moderador almendron

    (@almendron)

    Echa un vistazo a https://codex.wordpress.org/Class_Reference/wpdb

    Y comprueba si te conecta usando

    $conn = new wpdb ($dbServerName, $dbUsername, $dbPassword, $dbName);

    Moderador almendron

    (@almendron)

    En algunos ejemplos me he encontrado con que el orden de las variables sería el siguiente:

    DB_USER, DB_PASSWORD, DB_NAME, DB_HOST

    Mira en Code Reference.

    • Esta respuesta fue modificada hace 4 meses, 2 semanas por almendron.

    Hola almendron máquina!!! Pues mira, he probado de las 2 maneras que me has dicho. Y en una de ellas has dado en el clavo!!!
    Cambiando el orden de los datos de acceso no ha funcionado.
    Pero cambiando el tipo de objeto a wpdb como me propones en la nueva línea de código ha funcionado a la perfección!!
    El código correcto entonces sería el siguiente (para el que lo pueda necesitar):

    <?php
    $dbServerName = "db4free.net";
    $dbUsername = "usuario";
    $dbPassword = "contraseña";
    $dbName = "nombrebasededatos";
    
    // create connection
    $conn = new wpdb ($dbServerName, $dbUsername, $dbPassword, $dbName);
    
    // check connection
    if ($conn->connect_error) {
        die("Conexión fallida: " . $conn->connect_error);
    }
    echo "Ehorabuena!!! Has conectado con la base de datos correctamente.";
    ?>

    De verdad almendron que te estoy muy agradecido!! Que haríamos los usuarios sin gente que tiene buena voluntad de ayudar. Me había vuelto loco haciendo pruebas y nada. Gracias a esto podré hacer los accesos a la base de datos para extraer los datos de tablas que necesito y para rellenar etiquetas.
    Un gran saludo!!

    • Esta respuesta fue modificada hace 4 meses, 2 semanas por bigdatadestroy.
    Moderador almendron

    (@almendron)

    De nada. Un saludo.

    Hola a todos!

    Gracias por compartir! estoy luchando por hacer también unas consultas a una base de datos externa alojada en google bigquery y no tenia ni idea por donde empezar.

    Gracias por compartir el código, es un punto de partida.

    Hola chicos! Perdonad que reabra el tema de nuevo, pero es que llevo varios dias intentando extraer datos de las tablas en la base de datos y no puedo hacerlo 🙁
    La conexión a la base de datos como tal, se realizaba….hasta ahí todo correcto.

    El problema es que después, tengo que hacer una consulta a una de las 3 tablas que tiene mi base de datos y imprimir el resultado en pantalla, pero no consigo que se imprima nada. He probado de 1.000 maneras diferentes pero nada. No se si es que tengo que agregar algo a algún archivo de configuración de wordpress para que me permita hacer la conexión externa o algo que estoy haciendo mal.

    Pongo aquí el código que sumo al anterior codigo de este tema -que es el que realizaba la conexión a la database-, para que miréis por favor si es que tengo algo mal o hay que hacerlo diferente.

    // Hacemos la consulta en la tabla y mostramos resultados
                 $my_table = 'intereses';
                 $query = "SELECT * FROM $mi_tabla";
                 $content = $conn->get_results( $query );
                 if ( count($content) > 0 ) {
                      foreach ( $content as $row ) {
                                echo $row->info;
                      }
                 }
    

    Mi base de datos tiene 3 tablas (intereses,cobrado y invertido), como veis en el codigo yo hago la consulta sobre la tabla intereses, y después intento mostrar el resultado con un foreach. Pero no muestra absolutamente nada.
    Como siempre gracias por adelantado.

    • Esta respuesta fue modificada hace 4 meses, 1 semana por bigdatadestroy.
    • Esta respuesta fue modificada hace 4 meses, 1 semana por bigdatadestroy.
    • Esta respuesta fue modificada hace 4 meses, 1 semana por bigdatadestroy.
    Moderador almendron

    (@almendron)

    Me estoy volviendo tarumba!! creo que al final la pagina la haré desde otro editor, porque en wordpress tienes que adaptar un codigo que debería funcionar por ser en php sin tener que adaptar nada.

    Bueno, al final no quiero abandonar todo el trabajo que ya he hecho en la plataforma wordpress que estoy preparando. Almendron, miré lo que me habías mandado, y rectifiqué cosas, pero sigue sin funcionar. Paso el codigo que tengo ahora. Están los datos de la base de datos, pero como es una base de datos de prueba me da igual que se vean los datos, por si quereis hacer alguna prueba con el codigo. Supuestamente debería funcionar así, incluso en algunas webs dicen que funciona, pero aquí no funciona. Incluso he creado un shortcode dentro del functions.php para ver si el problema era el plugin que utilizo para meter php dentro de las paginas, pero tampoco ahí ha funcionado.

    <?php
    global $wpdb;
    $mydb = new wpdb( 'vargame_42', 'eurovegas42', 'vargame_42','db4free.net' ) or die("Error en la conexion");
    $mydb->show_errors();
    $consulta= $mydb->query("SELECT interes,mes FROM intereses") or die("Error en la consulta");
        foreach( $consulta as $results ) {
            echo $results->interes;
            echo $results->mes;
        }
    ?>

    A ver si alguien lo hace funcionar, porque tengo que obtener información de la base de datos para pasarlo a campos en las paginas de wordpress y no puedo hacerlo sino consigo conectar con la sql externa.
    La base de datos contiene datos y la consulta funciona si la hago solo en php con mysqli_connect, lo he probado. Pero aquí en WordPress nada.

    • Esta respuesta fue modificada hace 4 meses, 1 semana por bigdatadestroy.
    Moderador almendron

    (@almendron)

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)
  • Debes estar registrado para responder a este debate.