Case Mysql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Case Mysql

    Hallo zusammen

    Ich habe da eine Abfrage die alle Daten auflistet welche zuvor in das array $einzelteile geschrieben wurde.
    PHP-Code:
        $query_abfragemysql_query ("SELECT * FROM $tab_teile where id_user = '$id_user
    && id_gruppe = '
    $id_gruppe
    && status ='aktiv' 
    && id_teil IN (
    $einzelteile)"); 
    Soweit so gut läuft einwandfrei.
    Nun wollte ich noch eine zusätzliche Bedingung reinbringen, das das IN nur bei dem mit der Regel Master durchgeführt wir und zwar als Case When $rechte = 'master' then && id_kurse IN
    Also
    PHP-Code:
        $query_abfragemysql_query ("SELECT * FROM $tab_teile where id_user = '$id_user
    && id_gruppe = '
    $id_gruppe
    && status ='aktiv' 
    (CASE 
    WHEN 
    $rechte = 'master' 
    THEN && id_teil IN (
    $einzelteile) END)"); 
    Das geht aber nicht, habe es auch schon ohne && und an verschiedenen Stellen oder mit where versucht ohne Erfolg.

    Habt Ihr eine Idee wie ich zum Ziel kommen?
    Danke

  • #2
    PHP-Code:
    $sql "
        SELECT *
        FROM " 
    $tab_teile "
        WHERE id_user = '" 
    mysql_real_escape_string($id_user) . "' 
        AND id_gruppe = '" 
    mysql_real_escape_string($id_gruppe) . "' 
        AND status = 'aktiv'
    "
    ;

    if (
    $rechte === 'master') {
        
    $sql .= " AND id_teil IN (" $einzelteile ")";

    SELECT * sollte nicht verwendet werden. Gib im SELECT immer die Spalten an, die du im Ergebnis erwartest.

    Die mysql_* Funktionen sind schon lange veraltet und in den aktuellen PHP-Versionen entfernt. Es sollte stattdessen mysqli oder PDO verwendet werden.

    So ein Mischmach aus Deutsch und Englisch (user, gruppe, ...) ist nicht gerade sinnvoll. Die Krönung ist ja "query_abfrage", weil Query ist das englische Wort für Abfrage :facepalm:

    Kommentar


    • #3
      SELECT * sollte nicht verwendet werden. Gib im SELECT immer die Spalten an, die du im Ergebnis erwartest.

      Die mysql_* Funktionen sind schon lange veraltet und in den aktuellen PHP-Versionen entfernt. Es sollte stattdessen mysqli oder PDO verwendet werden.
      Danke für den Hinweis ich werde mich mal schlau machen. Was ist besser PDO oder mysqli?

      Ja, mein Deutsch Englisch hast Du schon im letzten Beitrag gerühgt. Ich versuche mich zu besser und zwar nur weil es Sinn macht was Du sagst.
      Zuletzt geändert von sepp; 22.03.2018, 19:32.

      Kommentar


      • #4
        Zitat von sepp Beitrag anzeigen
        Danke für den Hinweis ich werde mich mal schlau machen. Was ist besser PDO oder mysqli?
        Ein "besser" gibt es nicht.

        mysqli bietet zusätzlich zur objektorientierten auch eine prozedurale API. Die erleichtert den Umstieg von mysql auf mysqli, da sie sehr ähnlich ist.

        PDO bietet nur eine objektorientierte API, die meiner Meinung angenehmer zu verwenden ist als die von mysqli. PDO unterstützt auch andere Datenbanksysteme als MySQL.

        Kommentar

        Lädt...
        X