Pregunta

Estoy teniendo un poco de un pedo cerebral en este caso. Estoy trabajando en un código que se asemeja a un formulario de búsqueda personalizada. El formulario de búsqueda personalizada, es una mezcla de casillas de verificación, así como algunos menús desplegables. Todos los campos que están siendo buscadas son también campos personalizados. Los campos personalizados se introducen a través de un panel de escritura personalizado. Algunos de los campos son valores individuales que otros están serializados campos.

funciona El código actual, pero no estoy seguro de si se debe tomar otro enfoque, no estoy buscando a alguien para escribir el código para mí. Sólo estoy buscando algunas ideas sobre cómo esto podría ser mejor.

$city = $_REQUEST['sCity'];
$activity = $_REQUEST['sActivity'][0];
$riverSegment = $_REQUEST['sRiverSegment'];
$topicOfInterest = $_REQUEST['sTopicOfInterest'][0];

$querystr = "
SELECT DISTINCT wp_posts.* FROM wp_posts, wp_postmeta
WHERE (
 wp_posts.ID = wp_postmeta.post_id
 AND wp_postmeta.meta_key = 'city'
 AND wp_postmeta.meta_value = '$city'
) OR (
 wp_posts.ID = wp_postmeta.post_id
 AND wp_postmeta.meta_key = 'riverSegment'
 AND wp_postmeta.meta_value = '$riverSegment'
) OR (
 wp_posts.ID = wp_postmeta.post_id
 AND wp_postmeta.meta_key = 'topicOfInterest'
 AND wp_postmeta.meta_value LIKE '%$topicOfInterest%'
) OR (
 wp_posts.ID = wp_postmeta.post_id
 AND wp_postmeta.meta_key = 'activity'
 AND wp_postmeta.meta_value LIKE '%$activity%'
) AND wp_posts.post_status = 'publish' AND wp_posts.post_type = 'sites'
ORDER BY wp_posts.post_date DESC";

Me siento como el ejemplo anterior es deficiente porque si la primera condición se encuentra una coincidencia ignorará el resto de las condiciones.

Nota al pie: si estoy trabajando con $ wpdb-> get_results (); ¿Debo estar escapando de la entrada del usuario para mantenerlo limpio?

¿Fue útil?

Solución

Esto no parece especialmente compleja, pero parece voluminoso y propenso a errores.

Como me respondió par de veces sobre temas similares - si esto no es momento crítico luego esperar a WP 3.1, ya que tendrá importantes mejoras para la consulta de campos personalizados

.

avanzada de metadatos consultas para breve valoración crítica sobre las próximas mejoras.

Para desinfectar las consultas ver método $wpdb->prepare() -. Protege contra ataques de inyección SQL Consultas

Licenciado bajo: CC-BY-SA con atribución
scroll top