2017-04-05 2 views
1

Ich habe ein Problem mit meinen Suchabfragen. Ich habe versucht, die Datenbank-Basis auf Benutzereingaben zu durchsuchen und sie auch von bestimmten Details zu sehen, aber es funktioniert nicht. Was mache ich falsch?Wie Suche Basis auf mehrere Parameter

hier ist meine Frage:

if(isset($_GET['search_term'])) 
{ 


    $search_term = $_GET['search_term']; 
    $ind = 'IND'; 
    if(empty($search_term)){ 
    echo '<div class="alert-warning" id="alert_message">Error: enter your query parameter.</div>'; 
    }else{ 

    $query = "SELECT * FROM [info].[dbo].[customer] WHERE cust_no LIKE '%$search_term' OR branch LIKE $search_term AND cust_type != 'BUS' AND cust_type != 'GRP' AND cust_type != 'MGM' AND cust_type != 'INT'" ; 
    $check = sqlsrv_query($conn, $query); 

    #checks if the search was made 
         if($check == false){ 
          die(print_r(sqlsrv_errors(), true)); 
         } 

         #checks if the search brought some row and if it is one only row 
         if(sqlsrv_has_rows($check) != 1){ 
           echo '<div class="alert-warning" id="alert_message">Error: no data found for this query.</div>'; 


         } 
+0

Bitte schreiben mehr, was Sie wollen, und dem, was man bekommt. Vielleicht '$ query = "SELECT * FROM [info]. [Dbo]. [Kunde] WHERE (cust_no LIKE'% $ search_term 'ODER Zweig LIKE $ search_term) AND cust_type! =' BUS 'AND cust_type! =' GRP ' UND cust_type! = 'MGM' UND cust_type! = 'INT' ";' –

Antwort

0

Sie nicht OR und AND so kombinieren sollte, wird es nicht tun, was Sie erwarten und viel mehr entsprechen.

Sie wahrscheinlich so etwas wie dies wollen:

SELECT * FROM [info].[dbo].[customer] WHERE 
    (cust_no LIKE '%$search_term' OR branch LIKE $search_term) // are these conditions even valid sql? 
    AND cust_type != 'BUS' 
    AND cust_type != 'GRP' 
    AND cust_type != 'MGM' 
    AND cust_type != 'INT' 

Hinweis: Sie sollten auch in vorbereiteten Anweisungen aussehen des SQL-Injection-Problem, das Sie jetzt haben, um loszuwerden.

+0

Danke, mein Herr. Ich werde das sofort machen. Danke auch für den Code. Einen schönen Tag haben. –

0

Try this:

SELECT 
    * 
FROM 
    [ info ] .[ dbo ] .[ customer ] 
WHERE (
    cust_no LIKE '%sss%' 
    OR branch LIKE '%sss%' 
) 
    AND cust_type != 'BUS' 
    AND cust_type != 'GRP' 
    AND cust_type != 'MGM' 
    AND cust_type != 'INT' 
+0

Danke Leute, ihr Leute rockt. @ Gaurav, Vielen Dank. Es funktionierte wie Magie. –

+0

Wirklich ....: D, was hast du erwartet. – Gaurav

0

Versuchen Sie, diese

$query = "SELECT * FROM [info].[dbo].[customer] WHERE cust_no LIKE '". %$search_term ."' OR branch LIKE '". %$search_term% ."' AND cust_type != 'BUS' AND cust_type != 'GRP' AND cust_type != 'MGM' AND cust_type != 'INT'" ;