Este post es continuación de Limpieza de links erróneos: codificando un PHP
Continuamos elaborando ese programita que nos permita limpiar links erróneos. Hoy le añadiremos unas pocas instrucciones al código que estuvimos viendo en Limpieza de links erróneos: codificando un PHP.
Lo que vamos a hacer es ejecutar una consulta de MySQL para localizar todos los posts que contienen una URL determinada. Para ello, se emplea la función mysql_query a la que se le pasa como parámetro un literal que es la consulta en sí.
No entraremos en detalle a explicar el lenguaje SQL, que es el que nos permite interactuar con una base de datos, pero en pocas palabras diremos que con SELECT indicamos qué campos queremos extraer, con FROM la tabla con la que deseamos operar y con WHERE imponemos las condiciones de búsqueda (en este caso se utiliza el operador LIKE junto con el caracter «%»). Es como si dijéramos: extrae todos los campos de la tabla «wp-posts» (donde se encuentran los posts de una base de datos de WordPress) en aquellos casos en los que el campo «post-content» (el contenido) contenga el literal que se indica entre «%».
La función mysql_query arroja como resultado un array (una tabla indexada de tantas filas como posts existan y tantas columnas como campos tenga la tabla «wp-posts»), que debe tratarse posteriormente mediante la función mysql_fetch_array, o FALSE.
La función mysql_fetch_array devuelve un valor del array o FALSE si no hay más filas. Por eso la condición de la estructura «While» (mientras que) es «$row = mysql_fetch_array($result))». Una condición que realiza varios trabajos a la vez: indexa el array desde su primer elemento hasta el último, introduce cada valor del array en la variable $row y obliga la finalización del bucle que recorre el array cuando ya no hay más filas.
[php]
<?php
$con = mysql_connect("localhost","AAA","BBB");
if (!$con)
{
die(‘Error de conexion: ‘ . mysql_error());
}
else
{
echo "conexion ok";
mysql_select_db("YYY", $con);
$result = mysql_query("SELECT * FROM wp_posts WHERE post_content LIKE ‘%https://www.lanzatu.blog/scripts/view.php?arch=posts0408&articulo=verpermalink&id=200408151%’");
echo "<br />";
while($row = mysql_fetch_array($result))
{
$contenido=$row[‘post_content’];
echo $contenido;
echo "<br />";
}
}
?>
[/php]
Así que para cada valor del array $result, se ejecuta el conjunto de instrucciones del bucle «while». Dichas instrucciones lo que hacen es asignar el valor del campo «post_content» (todo el contenido del post) a la variable $contenido y mostrarlo en pantalla con la sentencia «echo». La sentencia «echo» es capaz de mostrar en pantalla código HTML, por lo que si queremos que exista diferenciación visual entre los contenidos de todos los posts que se han encontrado, hay que añadir un salto de línea («<br />»).
Lo que hemos hecho, como dije en el post anterior, es buscar todos los posts que contienen la URL https://www.lanzatu.blog/scripts/view.php?arch=posts0408&articulo=verpermalink&id=200408151 y mostrarlos en pantalla, si es que existe alguno.
Pruébalo, sustituyendo la URL entre «%» por cualquier literal que quieras buscar. Y recuerda cambiar los valores AAA (usuario), BBB (password) e YYY (nombre de la base de datos) por tus credenciales de la base de datos.
¡Ah! y asegúrate de que posees un backup de tu base de datos de WordPress antes de ejecutar cualquier programa que desarrolles, sobre todo si realiza modificaciones sobre ella (cuestión que veremos en un próximo post).
Si no ves el prompt autocompletado o ves el de una ejecución anterior (o aparece la página de acceso), el texto ya está copiado. Solo pégalo.
En Blogpocket se promueve un uso ético y responsable de la IA

Deja una respuesta