2010-06-16 2 views
-1

que je fais ce qui suit:

$type = 'attachment'; 
$images = $wpdb->get_results($wpdb->prepare(' 

       SELECT p.* 
       FROM wp_%d_posts p 
       WHERE p.post_parent =%d 
       AND p.post_type = "%s" 


    ', $blog_id, $page->ID, $type),OBJECT); 


var_dump($images); 

Si je supprime la ligne « ET p.post_type = « % s » » puis-je obtenir des résultats retournés, sinon je reçois un tableau vide est retourné. Si je lance la requête directement sur la base de données dans un client mysql, j'obtiens des résultats.

Il n'y a pas d'erreur, juste un jeu de résultats vide. Je fais des requêtes similaires tout au long de mon fichier et ils travaillent donc je ne cherche pas de réponses de style "ne le faites pas comme ça". Je suis contre un délai serré et juste besoin de comprendre pourquoi cela ne marche pas et de le réparer.

PHP 5.3, MYSQL 5.1. Wordpress MU 2.9.2

merci!

+0

Êtes-vous sûr il y a des pièces jointes qui sont des enfants de '$ page-> ID'? – TheDeadMedic

+0

oui. Si j'exécute la requête directement sur la base de données, j'obtiens des résultats. Comme indiqué, j'obtiens aussi des résultats si je supprime la partie AND de la clause where. – codecowboy

Répondre

0

Ne pas citer "%s". A partir du site WordPress, "Notez que vous n'avez pas à vous soucier de l'insertion de chaînes.Au lieu de passer les variables directement dans la requête SQL, utilisez un espace réservé %s pour les chaînes et un %d placéolder pour les entiers."

Exemple:

$wpdb->query($wpdb->prepare("UPDATE $wpdb->posts SET post_title = %s WHERE ID = %d", $var, $id));

+0

Merci, mais j'ai essayé et ça ne fait aucune différence. J'ai également essayé des tas de différentes combinaisons de citations, de guillemets simples, de guillemets échappés. Aucune différence. – codecowboy

+0

Votre code tel que posté est erroné selon le manuel Wordpress. Je l'ai souligné, et vous notez que la réponse est fausse? Il semble certainement que vous ne manipulez pas correctement l'instruction Prepare ... – Gary

+0

sorry - si vous modifiez la réponse, je la relèverai. Juste un peu stressé :-( – codecowboy

Questions connexes