PHP MySQL SELECT * FROM table WHERE ...

smallwall

Lt. Junior Grade
Registriert
Feb. 2014
Beiträge
446
Hi, ich möchte alle Werte auswählen, die mit einem bestimmten Buchstaben anfangen, dazu habe ich dieses gefunden
PHP:
$sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE 'n%'";
Das funktioniert auch, nur für den Buchstaben "n". Wenn ich das ganze per Variable benutzen möchte
PHP:
$sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE '".$letter."%'";
funktioniert das nicht mehr. Die PDO Variante
PHP:
$sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE :start";
... 
$stmt->bindParam(':start', $start);
... etc

funktioniert ebensowenig.
Was kann man da machen? Wie bekomme ich das mit einer Variable zum laufen?
 
Naja, ich hab 20 verschiedene PDO Queries, die funktionieren, wenn das gepostete nicht vollständig ist, kann ja jemand die Punkte ausmalen :P
 
Das ist der variable Anfangsbuchstabe. Wenn ich $letter = "a"; benutze soll es alle Werte mit a am Anfang selecten, wenn ich $letter = "z"; benutze, alle mit mit z.
 
smallwall schrieb:
Das ist der variable Anfangsbuchstabe. Wenn ich $letter = "a"; benutze soll es alle Werte mit a am Anfang selecten, wenn ich $letter = "z"; benutze, alle mit mit z.

Und wo ist da dein Joker (%)? ;)

du müsstest quasi $letter = 'z%'; machen, dann sollte es eigentlich gehen :D
 
PHP:
WHERE White LIKE '".$letter."%'";
Dort ist doch ein %, direkt hinter $letter.
 
smallwall schrieb:
PHP:
WHERE White LIKE '".$letter."%'";
Dort ist doch ein %, direkt hinter $letter.

Beim prepared Statement, also bei

$sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE :start";
$stmt->bindParam(':start', $start);

Da muss $start = 'a%'; rein, damit er das Prozentzeichen hat.

Warum das andere Statement nicht funzt ist die andere Frage, theoretisch sieht das richtig aus. Mach vielleicht mal ein var_dump($letter), nicht dass da noch ein Leerzeichen am Buchstaben hängt oder so.
 
Hi, ich habe es jetzt gelöst. Es funktioniert mit diesem Code problemlos:
PHP:
    public function listallplayers($s) {
        
        $sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE :string";
                
        $string = strtoupper($s)."%";
        
        $stmt = $this->con->prepare($sel);
        $stmt->bindParam(':string', $string);
        $stmt->execute();

        return $stmt;

    }

Ich *glaube* es lag am strtoupper(), also gab es ein gross/klein Problem an einer anderen Stelle. Naja wie auch immer, es läuft und ist somit gelöst, vielen Dank für Eure Zeit :)
 
smallwall schrieb:
Hi, ich habe es jetzt gelöst. Es funktioniert mit diesem Code problemlos:
PHP:
    public function listallplayers($s) {
        
        $sel = "SELECT * FROM " . $this->filetable . " WHERE White LIKE :string";
                
        $string = strtoupper($s)."%";
        
        $stmt = $this->con->prepare($sel);
        $stmt->bindParam(':string', $string);
        $stmt->execute();

        return $stmt;

    }

Ich *glaube* es lag am strtoupper(), also gab es ein gross/klein Problem an einer anderen Stelle. Naja wie auch immer, es läuft und ist somit gelöst, vielen Dank für Eure Zeit :)

Äh ja, strtoupper macht da schon einen Unterschied:freak:

Schön dass es jetzt läuft, solltest du nochmal Probleme haben, scheue dich bitte nicht den _kompletten_ Code zu posten und zu fragen ;)
 
Zurück
Oben