Anzeige

Sql Query Klammer-Problem ?

Sql Query Klammer-Problem ? | PSD-Tutorials.de

Erstellt von philipp1988, 14.10.2008.

  1. philipp1988

    philipp1988 Nicht mehr ganz neu hier

    Dabei seit:
    14.09.2005
    Beiträge:
    248
    Geschlecht:
    männlich
    Ort:
    Braunschweig
    Sql Query Klammer-Problem ?
    Hey ,

    es ist zu früh damit ich irgendwie das Problem hinbekomme :X

    Habe folgende Query
    PHP:
    1.  
    2.  
    3.     $sql_past = mysql_query( 'SELECT * FROM tk_orders JOIN tk_costcenter ON tk_orders.costcenter_id = tk_costcenter.costcenter_id LEFT JOIN tk_supplier ON tk_orders.supplier_id = tk_supplier.supplier_id LEFT JOIN tk_staff ON tk_orders.respons_tk_id = tk_staff.id WHERE (supplier LIKE "%'.$_POST['search'].'%" OR order_id LIKE "%'.$_POST['search'].'%" OR delivery_id LIKE "%'.$_POST['search'].'%" OR costcenter LIKE "%'.$_POST['search'].'%" OR settlement LIKE "%'.$_POST['search'].'%" OR displacement LIKE "%'.$_POST['search'].'%" OR remembrance LIKE "%'.$_POST['search'].'%" OR respons_tk_id LIKE "%'.$_POST['search'].'%" OR respons_delivery_id LIKE "%'.$_POST['search'].'%" OR order_tk_id LIKE "%'.$_POST['search'].'%" OR order_delivery_id LIKE "%'.$_POST['search'].'%" OR activity LIKE "%'.$_POST['search'].'%" OR entry LIKE "%'.$_POST['search'].'%" OR create_name LIKE "%'.$_POST['search'].'%" OR create_date LIKE "%'.$_POST['search'].'%" OR create_ugroup LIKE "%'.$_POST['search'].'%"  OR firstedit_name LIKE "%'.$_POST['search'].'%" OR firstedit_date LIKE "%'.$_POST['search'].'%" OR firstedit_ugroup LIKE "%'.$_POST['search'].'%"  OR secedit_name LIKE "%'.$_POST['search'].'%" OR secedit_date LIKE "%'.$_POST['search'].'%" OR secedit_ugroup LIKE "%'.$_POST['search'].'%" OR last_edit LIKE "%'.$_POST['search'].'%" OR name LIKE "%'.$_POST['search'].'%") AND supplier = "'.$_SESSION['ugroup'].'" AND '. $auftrags_datum_FieldName .' < "'. $thisTime .'" ');
    4.  
    5.  
    So funktioniert es auch .. er sucht alle Aufträge aus der Datenbank wo etwas in der Feldern vorkommt was in $_POST['search'] drinsteht und! wo in supplier die ID von $_SESSION['ugroup'] drin steht und die auftragszeit < der aktuellen Zeit.

    Nun möchte ich noch hinzufügen, dass er auch in den Produktgruppen unterscheiden soll ( pgroup ) Da kann es dann mehrere sein, also muss es mit OR verknüpft werden nur wenn ich jetzt vor dem AND supplier = ... ein AND ( pgroup = "B" OR pgroup = "A" ) mache .. gibt er garnichts mehr aus..

    Habe ich da einen Denkfehler, was die Klammersetzung betrifft?

    mfg
     
    #1      
  2. Top_Gun

    Top_Gun Aktives Mitglied

    Dabei seit:
    24.07.2008
    Beiträge:
    965
    Geschlecht:
    männlich
    Sql Query Klammer-Problem ?
    AW: Sql Query Klammer-Problem ?

    Ich finde es ist immer kompliziert anhand der PHP-Codes SQL-Fehler zu finden...

    Wie wäre es wenn du mal das probierst:
    PHP:
    1. $sql = 'SELECT * FROM tk_orders JOIN tk_costcenter ON tk_orders.costcenter_id = tk_costcenter.costcenter_id LEFT JOIN tk_supplier ON tk_orders.supplier_id = tk_supplier.supplier_id LEFT JOIN tk_staff ON tk_orders.respons_tk_id = tk_staff.id WHERE (supplier LIKE "%'.$_POST['search'].'%" OR order_id LIKE "%'.$_POST['search'].'%" OR delivery_id LIKE "%'.$_POST['search'].'%" OR costcenter LIKE "%'.$_POST['search'].'%" OR settlement LIKE "%'.$_POST['search'].'%" OR displacement LIKE "%'.$_POST['search'].'%" OR remembrance LIKE "%'.$_POST['search'].'%" OR respons_tk_id LIKE "%'.$_POST['search'].'%" OR respons_delivery_id LIKE "%'.$_POST['search'].'%" OR order_tk_id LIKE "%'.$_POST['search'].'%" OR order_delivery_id LIKE "%'.$_POST['search'].'%" OR activity LIKE "%'.$_POST['search'].'%" OR entry LIKE "%'.$_POST['search'].'%" OR create_name LIKE "%'.$_POST['search'].'%" OR create_date LIKE "%'.$_POST['search'].'%" OR create_ugroup LIKE "%'.$_POST['search'].'%"  OR firstedit_name LIKE "%'.$_POST['search'].'%" OR firstedit_date LIKE "%'.$_POST['search'].'%" OR firstedit_ugroup LIKE "%'.$_POST['search'].'%"  OR secedit_name LIKE "%'.$_POST['search'].'%" OR secedit_date LIKE "%'.$_POST['search'].'%" OR secedit_ugroup LIKE "%'.$_POST['search'].'%" OR last_edit LIKE "%'.$_POST['search'].'%" OR name LIKE "%'.$_POST['search'].'%") AND supplier = "'.$_SESSION['ugroup'].'" AND '. $auftrags_datum_FieldName .' < "'. $thisTime .'" ';
    2. echo $sql;
    3. $sql_past = mysql_query($sql);
    Du siehst dann was er dir als SQL Anweisung zusammenbastelt und kannst so die Fehler nur im SQL-String suchen und viel schneller finden... Hinterher musst du nur die eine Zeile rausnehmen...

    Poste uns dann doch mal den SQL-String bzw den vor und den nach der Änderung...
     
    #2      
  3. saila

    saila Moderatorle

    Dabei seit:
    21.06.2006
    Beiträge:
    2.239
    Geschlecht:
    männlich
    Ort:
    50°48'23.69" N 7°14'22.19" O
    Software:
    Eclipse, PHP5 OO, MySQL5, CSS(auch Barrierefrei), JS, Symfony
    Sql Query Klammer-Problem ?
    AW: Sql Query Klammer-Problem ?

    Also wenn du nun weitere optionale Parameter in die Bedingung nehmen möchtest, kannst du diese in eine Klamme setzen. Welchen Einfluss eine Klammer in einer Bedingung nehmen kann, ist auf MySQL :: Die populrste Open-Source-Datenbank der Welt im Manual nachzulesen. Somit ist die Frage nach Sinn der Klammer beantwortet.

    Alternativ kannst du auch die Gruppen per GROUP BY zusammen fassen - sofern das dein Ziel sein sollte.

    Lass dich ergänzend auf "mysql_real_escape_strin()" hinweisen und das man eine $_POST['search'] nie direkt in ein Querystatment übernimmt!!! Hier kann unteranderem auch ein Leerzeichen vorhanden sein.

    An das Ende gehört unter anderem: or die ( mysql_error() );
     
    #3      
x
×
×
teststefan