Case Mysql

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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:

    Comment


    • #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.
      Last edited by sepp; 22-03-2018, 19:32.

      Comment


      • #4
        Originally posted by sepp View Post
        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.

        Comment

        Working...
        X