2012-04-30 2 views
1

J'essaie de comprendre comment rechercher Value1 qui pourrait être dans Field1, Field2 ou Field3. Je sais que ma syntaxe est mauvaise parce qu'elle est de toute évidence ne fonctionne pas, mais ici était ma fissure à elle:Valeur de recherche Mysqli dans plusieurs champs

$query = "SELECT * 
    FROM table1 
    WHERE city = '$city' 
    AND state = '$state' 
    AND location = '$location' 
    AND (field1 = '$field1U' OR field1 = '$field2U' OR field1 = '$field3U') 
    ORDER BY date_created LIMIT 5"; 
$data = mysqli_query($dbc, $query); 

Je pensais que je pourrais peut-être utiliser où field1 en (1,2,3), mais je ne pouvais pas l'obtenir travailler. Toute aide serait grandement appréciée.

Répondre

0

Si vous voulez trouver tous les enregistrements où:

field1 = someValue

ou field2 = someValue

ou field3 = someValue

vous pouvez utiliser ceci:

$query = "SELECT * FROM table1 WHERE city = '$city' AND state = '$state' AND location = '$location' AND (field1 = '$Value1' OR field2 = '$Value1' OR field3 = '$Value1') ORDER BY date_created LIMIT 5"; 
    $data = mysqli_query($dbc, $query); 
0

Remplacer

AND (field1 = '$field1U' OR field1 = '$field2U' OR field1 = '$field3U') 

avec

AND (field1 = '$search' OR field2 = '$search' OR field3 = '$search') 

(notez que je suis à la recherche de champ1, champ2 ou field3) mais s'il vous plaît, s'il vous plaît, s'il vous plaît (!!) échapper à ces chaînes de recherche $! par exemple:

$search = mysqli_real_escape_string($link, $search) 

où $ lien a été défini à l'aide

$link = mysqli_connect(...) 

s'il vous plaît se référer à http://php.net/manual/de/mysqli.real-escape-string.php ceci est utilisé pour empêcher l'injection SQL (https://en.wikipedia.org/wiki/SQL_injection)

oh, et essayez de séparer le texte des variables, car personnellement, je pense que c'est un style de codage plus sûr et meilleur. pour votre cas d'utilisation:

AND (field1 = '" . $search . "' OR field2 = '" . $search . "' OR field3 = '" . $search . "') 
+0

Qu'est-ce que $ search défini comme, désolé si c'est une question stupide. Et les données sont tirées d'une table où les champs ont déjà été échappés, je voudrais que cela devrait être ok non? – mxcoop98

+0

'$ search' est le" Value1 "de votre question. vous n'avez pas besoin d'une valeur échappée dans votre base de données, mais dans votre requête. lire à propos de SQL Injection sur wikipedia. – Stefan

Questions connexes