2014-06-11 4 views
1

Je travaille sur un plugin Wordpress pour rechercher tous les utilisateurs par prénom, nom de famille, e-mail, etc. Il fonctionne tant que je n'utilise que 1 des valeurs comme prénom . Je dois ajouter toutes les valeurs à la sélection!Wordpress instruction SQL LIKE avec plusieurs valeurs

J'ai déjà essayé d'ajouter plus en utilisant ',' et les instructions OR, mais cela ne fonctionne pas.

$results = $wpdb->prepare("SELECT * FROM users WHERE first_name LIKE %s", "%".$_POST['search']."%"); 

EDIT: il trouve

Je l'ai trouvé!

$results = $wpdb->prepare("SELECT * FROM users WHERE lower(first_name) LIKE lower (%s) OR lower(last_name) LIKE lower(%s) LIKE lower(%s)OR lower(postcode) LIKE lower(%s)", "%".$_POST['search']."%", "%".$_POST['search']."%"); 

Répondre

1

Pour que le% littéral passe par $wpdb->prepare, doublez-le. Vous n'avez pas besoin d'éviter $wpdb->prepare.

Preuve du concept:

var_dump($wpdb->prepare('SELECT * FROM {$wpdb->posts} WHERE post_title LIKE "%%%s%%"','Hello')); 

Ainsi, votre requête devrait être:

$results = $wpdb->prepare("SELECT * FROM users WHERE first_name LIKE %%%s%%",$_POST['search']); 

(more...)

Mise à jour

Utilisez ce pour imploser OU:

$var[] = 'name LIKE "%%%s%%"'; 
$var_data[] = 'Hello'; 
$var[] = 'email LIKE "%%%s%%"'; 
$var_data[] = '[email protected]'; 
$var[] = 'date LIKE "%%%s%%"'; 
$var_data[] = 'Howdy'; 
var_dump($wpdb->prepare('SELECT * FROM users WHERE '.implode(' OR ',$var),$var_data)); 
+0

Mais j'ai besoin comme: SELECT * FROM utilisateurs WHERE prenom, last_name, rue, courriel comme% s », etc. – user3729015

0

Traitez-vous l'objet correctement? Cela itérer sur les valeurs récupérées

while($row = $results->fetch_assoc()){ 
    echo $row['username'] . '<br />'; 
} 
Questions connexes