Sophie: Fehler gefunden - Keine Lösung

Beitrag lesen

Guten Morgen,

ich habe den Fehler gefunden. Ich habe eine Funktion ist wie folgt aufgebaut ist:

function zeiterfassung($mysqli, $name=false, $projektnummer=false, 
                                $datum_von=false, $datum_bis=false) {
        
       $select = "SELECT id, projektnummer, name, datum, anzStunden, 
                  FROM zeiterfassung";
        
        if ($projektnummer != false && $name != false) {

                $param = '%'.$projektnummer.'%';
                
                $stmt = $mysqli->prepare($select . " WHERE projektnummer Like ? AND name=?" );
                $stmt->bind_param("ss", $param, $name);
                
        } elseif ($projektnummer != false) {

                $param = '%'.$projektnummer.'%';
                
                $stmt = $mysqli->prepare($select . " WHERE projektnummer Like ?" );
                $stmt->bind_param("s", $param);
                
        } elseif ($name != false) {
                
                $stmt = $mysqli->prepare($select . " WHERE name =?" );
                $stmt->bind_param("s", $name);

        } elseif ($datum_von != false) {
                
                $stmt = $mysqli->prepare($select . " WHERE datum =?" );
                $stmt->bind_param("s", $datum_von);
                
        } elseif ($datum_bis != false) {
                
                $stmt = $mysqli->prepare($select . " WHERE datum <=?" );
                $stmt->bind_param("s", $datum_bis);
                
        } elseif ($datum_von != false && $datum_bis != false) {
                
                $stmt = $mysqli->prepare($select . " WHERE datum BETWEEN ? AND ? " );
                $stmt->bind_param("ss", $datum_von, $datum_bis);

        } else {
            $stmt = $mysqli->prepare($select);
        }

Wenn ich diese so nutze, geht mein Between in der letzten Zeile nicht. Jetzt habe ich zum Teste die Funktion etwas gekürzt

function zeiterfassung($mysqli, $name=false, $projektnummer=false, 
                                $datum_von=false, $datum_bis=false) {
        
       $select = "SELECT id, projektnummer, name, datum, anzStunden, 
                  FROM zeiterfassung";
        
        if ($datum_von != false && $datum_bis != false) {
                
                $stmt = $mysqli->prepare($select . " WHERE datum BETWEEN ? AND ? " );
                $stmt->bind_param("ss", $datum_von, $datum_bis);

        } else {
            $stmt = $mysqli->prepare($select);
        }

Und siehe da, mein BETWEEN funktioniert. Aber warum? Was stimmt denn mit dem IF Bereich nicht?