web-dev-qa-db-fra.com

Avertissement $ wpdb-> prepare () dans WordPress 3.5

Je reçois cet avertissement lorsque j'essaie d'exécuter une requête sur une base de données:

Attention: Argument manquant 2 pour wpdb :: prepare ()

La requête incriminée est:

$result = $wpdb->get_var(
    $wpdb->prepare(
        "SELECT DISTINCT meta_value FROM $metatable
        WHERE meta_key LIKE '%matchme%'
        AND meta_value IS NOT NULL
        AND meta_value <> ''" 
    )
);

Est-il possible de supprimer l'erreur en modifiant la requête ci-dessus?

5
Emerson Maningo

Supprimer l'appel à $wpdb->prepare():

$result = $wpdb->get_var(
    "SELECT DISTINCT meta_value FROM $metatable
    WHERE meta_key LIKE '%matchme%'
    AND meta_value IS NOT NULL
    AND meta_value <> ''"
);

Dans ce cas, la fonction $wpdb->prepare() estne fait rien. Il n'y a pas de variables contenant des valeurs inconnues, il n'est donc pas nécessaire de les désinfecter.

Si vous avez avez des variables qui ont besoin d'être nettoyées, vous pouvez ajouter un deuxième argument à la fonction:

$result = $wpdb->get_var(
    $wpdb->prepare(
        "SELECT DISTINCT meta_value FROM %s
        WHERE meta_key LIKE '%matchme%'
        AND meta_value IS NOT NULL
        AND meta_value <> ''",
    $metatable )
);

Liens pertinents:

6
Mark Kaplun