Ergebnis 1 bis 5 von 5

Thema: bei Datenbankabfrage unerwünschte Anführungszeichen

  1. #1
    Contao-Fan
    Registriert seit
    10.01.2010.
    Ort
    Kiel
    Beiträge
    341

    Standard bei Datenbankabfrage unerwünschte Anführungszeichen

    Hallo,

    wenn ich eine DB-Abfrage so durchführe:
    PHP-Code:
    $cat_id '4';
    $result $this->Database->prepare('SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN (?)')->execute($cat_id); 
    dann wird der Wert der Variablen in Anführungszeichen gesetzt und es kommt diese Query dabei raus:
    Code:
    SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN ('4')
    Das funktioniert aber nicht mit den Anführungszeichen um die '4'.

    Wenn ich die Abfrage so durchführe:
    PHP-Code:
    $result $this->Database->prepare('SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN ('.$cat_id.')')->execute(); 
    kommt folgende Query dabei raus:
    Code:
    SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN (4)
    Also genauso wie ich es haben möchte. Aber es wäre ja schöner, die Variable in die execute-Funktion zu schreiben. Woran liegt das und was kann ich tun?

    Viele Grüße
    Tina

  2. #2
    Contao-Nutzer Avatar von Nils Heinold
    Registriert seit
    04.09.2010.
    Ort
    Uckermark
    Beiträge
    155
    User beschenken
    Wunschliste

    Standard

    Vielleicht solltest du

    PHP-Code:
    $cat_id '4';
    $result $this->Database->prepare("SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN (?)")->execute($cat_id); 
    doppelte Anführungszeichen nehmen!

    Nils

  3. #3
    Contao-Fan
    Registriert seit
    10.01.2010.
    Ort
    Kiel
    Beiträge
    341

    Standard

    Nein, die Art der Anführungszeichen ist egal.

    Ich stelle gerade fest, dass ich das noch etwas detaillierter beschreiben muss. Also die Variable kommt über $_GET und enthält eigentlich '03', '04', '05' usw.

    Wenn ich die explizit in Integer umwandel:
    PHP-Code:
    $cat_id = (int)$_GET['cat_id']; 
    dann funktioniert die Abfrage. Das Problem ist, dass er dann natürlich 3, 4, 5 etc. nimmt und die Null davor entfernt. Dahinter können noch Buchstaben kommen, deswegen kann ich nicht über '=' abfragen, sondern muss den 'IN'-Operator nehmen. Wenn ich aber ohne die Null vorher abfrage, dann wird 4 natürlich auch bei '14' gefunden und ich will ja '04'. Ok, ich merk gerade, dass das eigentlich keine Contao-Frage mehr ist. Falls doch jemand eine Idee hat, immer her damit Ansonsten schon mal vielen Dank!

  4. #4
    Wandelndes Contao-Lexikon Avatar von BugBuster
    Registriert seit
    15.06.2009.
    Ort
    Berlin
    Beiträge
    10.514
    User beschenken
    Wunschliste

    Standard

    Anders gefragt, warum soll denn das:
    Code:
    SELECT * FROM ff_webserverdat WHERE ObjektartWERT IN ('4')
    prinzipiell nicht funktionieren? Meckert da Contao oder Mysql oder was?
    Grüße, BugBuster
    "view source" is your guide.
    Danke an alle Amazon Wunschlisten Erfüller

  5. #5
    Contao-Fan
    Registriert seit
    10.01.2010.
    Ort
    Kiel
    Beiträge
    341

    Standard

    Er gibt dann 0 Datensätze zurück. Ich weiß nicht warum. Ist egal, ob ich das über Contao oder phpMyAdmin ausführe, das Ergebnis ist das gleiche.

    PHP-Code:
    SELECT FROM ff_webserverdat WHERE ObjektartWERT IN ('4'
    -> gibt 0 Datensätze aus

    PHP-Code:
    SELECT FROM ff_webserverdat WHERE ObjektartWERT IN (4
    -> gibt alle gewünschten Datensätze aus

    Das Feld "ObjektartWERT" ist vom Typ "text". Gerade deswegen hätte ich eigentlich gedacht, dass es mit Anführungszeichen funktioniert.


    ------------------------
    EDIT: Hier die Lösung!

    So was dämliches... sorry, war mein Fehler, ich habe IN und LIKE verwechselt. Ich habe nach einen Teilstring gesucht und dann muss die Abfrage natürlich so lauten:
    PHP-Code:
    $result $this->Database->prepare('SELECT * FROM ff_webserverdat WHERE ObjektartWERT LIKE ?')->execute($cat_id.'%'); 
    Geändert von Tina (16.04.2013 um 13:40 Uhr)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •