Cómo obtener registros de la base de datos en WordPress

3 dic 2013, 15:38:21
Vistas: 14K
Votos: 0

index.php:

 <?php $new=$wpdb->query("select * from wp_posts where post_title='Auto Draft'");
 $new1=mysql_fetch_row($new);
 echo $new1[0];
 ?>

¿Cómo obtener registros de la base de datos?
¿Cómo funciona la base de datos con los archivos de WordPress?

0
Todas las respuestas a la pregunta 1
4

wpdb es un envoltorio simple alrededor de las funciones mysql_*, pero no puedes mezclarlas y combinarlas. $wpdb->query no devuelve la referencia a la base de datos que necesita mysql_fetch_row. Esto...

...devuelve un entero correspondiente al número de filas afectadas/seleccionadas. Si hay un error de MySQL, la función devolverá FALSE. (Nota: como pueden devolverse tanto 0 como FALSE, asegúrate de usar el operador de comparación correcto: igualdad == vs. identidad ===).

Solo tienes que leer el Codex.

Por lo tanto, $wpdb->query es realmente para consultas que no devuelven datos, como un DELETE.

Lo que necesitas es:

$new = $wpdb->get_results("select * from wp_posts where post_title='Auto Draft'");

También deberías usar prepare si estás utilizando datos proporcionados por el usuario.

$new = $wpdb->get_results($wpdb->prepare("select * from wp_posts where post_title=%s",$str));

Esto devolverá un objeto, pero puedes pasar un segundo parámetro para obtener un array. Puedes iterar sobre ese objeto o array con las operaciones habituales de objetos/arrays de PHP.

También existen $wpdb->get_var y $wpdb->get_col.

La base de datos contiene, como en cualquier otra aplicación PHP/MySQL, tu contenido dinámico: posts, páginas, opciones configurables, tablas de categorías, etc. No es una lista fácilmente enumerable.

En cuanto a la pregunta en el comentario, "¿en qué caso necesitamos usarlo con mayor probabilidad?" No tengo idea. Depende de lo que estés haciendo. Realmente no es algo que se pueda responder, pero diría que en la mayoría de los casos no deberías necesitar, ni tampoco deberías de todas formas, escribir SQL para manipular la base de datos. Hay muchas funciones principales para eso: WP_Query, WP_User_Query, set_option, update_post_meta, wp_update_post, y la lista continúa por unas veinte líneas más.

3 dic 2013 16:21:29
Comentarios

¡Qué amable de tu parte :) ¿Cuál es el papel de la base de datos? Me refiero a cómo usar consultas de base de datos en WordPress y en qué casos es más probable que necesitemos usarlas. Muchas gracias

Tushar Sharma Tushar Sharma
4 dic 2013 06:45:39

@TusharSharma : Mira la edición.

s_ha_dum s_ha_dum
4 dic 2013 17:23:06

@s_ha_dum ¿Puedes revisar los puntos a continuación? - Has mencionado $wpdb->query es realmente para consultas que no devuelven datos, como un delete. pero en el caso de una consulta de eliminación $wpdb->query devolverá el número de registros afectados. - Has usado $wpdb->results. ¿No debería ser $wpdb->get_results?

Chittaranjan Chittaranjan
13 dic 2013 08:51:11

Me refería a "devolver datos de la base de datos"-- filas/valores de la base de datos. Sí, creo que todos los métodos devuelven alguna información sobre la ejecución de la consulta. Sí, es get_results. Probablemente estaba escribiendo con prisa. :)

s_ha_dum s_ha_dum
13 dic 2013 16:35:03