2012-01-13 8 views
0

私は、次のフィールドがあります:誰かが検索した場合、姓と名の キーワードが$keyword です:ジョン・ドウ は、私は結果を返すことができるようにしたいです。 これは、johnまたはdoeの場合に結果を返します。すべてのヘルプは大歓迎あなたに感謝されるだろうのMySQL/SQL検索

$q1 = strtolower($_GET["q"]); 
$q=str_replace(" ","%",$q1); 
$sql = "select DISTINCT users.*, user_id FROM users WHERE $email_filter 
firstname LIKE '%$q%' OR lastname LIKE '%$q%' ORDER BY lastname"; 
$rsd = mysql_query($sql); 
while($rs = mysql_fetch_array($rsd)) { echo $results } 

:ここ は、コードです!

+1

を役に立てば幸い。 $ first_nameと$ last_nameです。 – MatBailie

+0

すべての例@Dems – cppit

答えて

0

は、あなたはそれがあるべきように、姓と名があなたのパラメータではなく、姓または名と一致する例をしたいfirstnameのLIKE「%の$ Qは%」AND姓LIKE「%の$ Qは%」

名前がJohn Doe、Johnnie Doe、John Does、Johnnieの場合はLIKEを使用しているため、これらの名前はすべて、Johnが含まれていて姓にDoeが含まれているレコードと一緒に返されますか。

+0

それを使用しても動作しない場合は、その$ q値の両方のフィールドをチェックする必要があります。彼らはそれを持っている必要があります。結果が返されません – cppit

+0

ああ両方のフィールドに同じ値を渡していたのを忘れました。それを2つの値に解析する方法はありますか? – Brian

0

このリンクヘルプユーザーは「ジョン・ドウ」のような応答を提供する場合、これはあなたに基づいて、任意の余分な空白をトリム値に提供する名前を壊し、それらの上にクエリする必要があり提供されたコード:

$q1 = trim(strtolower($_GET["q"])); 
$name = explode(" ",$q1); 
$fname = $name[0]; 
$lname = $name[1]; 
$sql = "select DISTINCT users.*, user_id FROM users WHERE $email_filter 
firstname LIKE '%$fname%' OR lastname LIKE '%$lname%' ORDER BY lastname"; 
$rsd = mysql_query($sql); 
while($rs = mysql_fetch_array($rsd)) { echo $results; } 

が、それはあなたが$ Qを供給する前に、 `%`ですべてのスペースを置き換える、または2つのパラメータを供給

+0

"Mary Sue Smith"のように、名前や姓にスペースがある場合は、これが正しく機能するとは思わない。 – radven

関連する問題