Home Programacion PHP Llamar a otra base de datos en una plantilla (WordPress)

Llamar a otra base de datos en una plantilla (WordPress)

Posteado en PHP, Programacion el Sábado, 15 de enero de 2011 a las 15:28 Sin comentarios

Muchos de nosotros solemos utilizar WordPress como una base segura para un sistema de usuarios y administracion de un sitio web. Muchas veces me ha tocado programar por sobre el WP base y modificarlo a gusto de mis clientes, pero al utilizar instrucciones o llamadas SQL independientes me he llegado a encontrar que interrumpen la correcta ejecucion de las llamadas de WP.

Es asi como investigando descubri que mientras se tuviera el mismo par usuario/clave que la base de datos de WP para acceder a la otra base de datos, era posible utilizar la notacion completa basededatos.tabla con el objeto global $wpdb.

Aqui les dejo un ejemplo simple, que en este caso estaria dentro de una plantilla de WordPress.

<?php
/**
 * @package WordPress
 * @subpackage Mi Tema de Prueba
 */
/*
Template Name: Probando $wpdb
*/
?>
<table width='600'>
<?php get_header; ?>
<?php
global $wpdb; // declaramos la global
$resultados = $wpdb->get_results("SELECT * FROM otrabd.mitabla");
$cuantos = $wpdb->num_rows;
foreach ($resultados as $datos)
{
echo '<tr>';
echo '<td>$datos->nombre</td>';
echo '<td>$datos->apellido</td>';
echo'</tr>';
}
?>
</table>
<?php echo 'Se han encontrado: '.$cuantos.' resultados.';
<?php get_footer; ?>

Aqui podemos ver que primero llamamos a la global $wpdb, luego utilizamos la propiedad get_results del objeto para obtener los resultados de nuestra consulta. En caso de que fuera necesario incluir variables externas  (POST o GET) en nuestra consulta, es recomendable utilizar la propiedad prepare del objeto $wpdb.
De la siguiente forma:

<?php
global $wpdb;
$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $_GET[nombre], $_GET[apellido]);
$resultados = $wpdb->get_results($query);
?>

Aqui vemos como la propiedad prepare recibe dos argumentos, el primero es la consulta que deseamos realizar, con las variables identificadas como %s y %d, y luego un segundo y tercer parametro que son (en orden) las variables que luego seran reemplazadas en %s y %d respectivamente. Como metodo opcional se puede pasar como segundo argumento un array con las variables (en caso de que nuestra consulta tuviera muchas variables externas a filtrar con prepare).

De este modo:

<?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $filtrar);
$resultados = $wpdb->get_results($query);
?>

Otras propiedades que les pueden ser de utilidad son $wpdb->query (para instrucciones de insertar, borrar,etc.) y $wpdb->num_rows (usada en el primer ejemplo, que devuelve la cantidad de filas afectadas en la ultima consulta).

Cabe destacar que tanto $wpdb->query como $wpdb->get_results pueden devolver los resultados como un array asociativo, un array numerico o un objeto (por defecto), llamando su segundo parametro como ARRAY_A o ARRAY_N respectivamente.

Por ejemplo:

<?php
global $wpdb;
$filtrar[] = $_GET[nombre];
$filtrar[] = $_GET[apellido];

$query = $wpdb->prepare("SELECT * FROM otrabd.mitabla WHERE nombre='%s' and apellido='%d'", $filtrar);
$resultados = $wpdb->get_results($query, ARRAY_A);
echo $resultados[nombre];
echo $resultados[apellido];
?>

Espero les haya servido este articulo, pueden encontrar más información aqui (En ingles):

Function Reference/wpdb Class



No hay comentarios aún

Dejar una respuesta