Ergebnis 1 bis 5 von 5

Thema: Verschiedene Apostrophe bei SELECT GREATEST

  1. #1
    HTML Newbie
    Registriert seit
    10.01.2016
    Beiträge
    3
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Verschiedene Apostrophe bei SELECT GREATEST

    Hallo,
    habe soeben zufällig eine Merkwürdigkeit entdeckt.

    Irgendwo in den weiten den Internets fand ich einen PHP-Code-Schnipsel für eine SELECT GREATEST Anweisung, bei der ungewöhnliche Apostrophen verwendet wurden. Ahnungslos habe ich den Schnipsel mit den Apostrophen kopiert und bei mir eingefügt. Nach einer Weile rumprobieren bekam ich die Anweisung auch zum erwünschten Erfolg und konnte sie auf eine SELECT LEAST erweitern. Nun sind mir auf dem Weg zum Erfolg die Apostrophe aufgefallen, die eben nicht wie die gewöhnlichen aussehen. Das allerkomischte ist nun, dass die Anweisung NUR mit diesen merkwürdigen Apostrophen funktioniert und nicht mit den herkömmlichen. Ich habe auch schon (im Testfile) ein header("Content-Type: text/html; charset=utf-8"); gesetzt, hat aber nichts genützt. Und vorher das File/den Code im Editor in UTF-8 gesetzt. Server ist ein Apache, kein Windows.

    Die merkwürdigen Apostrophe sehen so aus: `
    Die herkömmlichen Apostrophe sehen so aus: '
    Ein klitzekleiner Unterschied der die PHP Funktion zum laufen bringt oder killt.
    Kann mit das mal bitte einer erklären?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Meister(in)
    Registriert seit
    24.02.2007
    Beiträge
    460
    Danke
    0
    Bekam 47 mal "Danke" in 47 Postings

    Standard AW: Verschiedene Apostrophe bei SELECT GREATEST

    Dieses Zeichen nennt man Backtick und wird zum Ausführen von Systemanweisungen benötigt.

  3. #3
    Azubi(ne)
    Registriert seit
    19.03.2012
    Beiträge
    64
    Danke
    1
    Bekam 10 mal "Danke" in 9 Postings

    Standard AW: Verschiedene Apostrophe bei SELECT GREATEST

    Ich widerspreche in diesem Fall einmal vorsichtig.

    Das hat im Fall SQL-Anqweisung mit PHP nicht wirklich etwas mit Systemanweisungen zu tun. In PHP werden Tabellen und Spaltenbezeichnungen, die als SQL-Statement dienen zwischen Backticks gestellt. So wäre es die korrekte Syntax.

    Dass PHP bei SQL-Anweisungen hin und wieder fehlende Backticks ignoriert hat nichts damit zu tun, wie die korrekte Syntax eigentlich sein SOLLTE, PHP erlaubt da nur Schlampigkeit.

    Auch Singlequotes haben eine feste Bedeutung und können (wenn sie fehlen) unterschiedliche Ergebnisse liefern
    Bsp:
    PHP-Code:
    $sql 'SELECT `feld1`, `feld2` FROM `'.$db_name.'`.`tabelle` WHERE `tabelle`.`feld1` = \''.$suchert.'\' LIMIT 1'
    Unterscheidet sich ganz erheblich von
    PHP-Code:
    $sql 'SELECT `feld1`, `feld2` FROM `'.$db_name.'`.`tabelle` WHERE `tabelle`.`feld1` = '.$suchert.' LIMIT 1'
    Fall1:
    Ist feld1 INT, und $suchwert '3a' wird der Datensatz gefunden, der im feld1 den Wert 3 hat, obwohl $suchwert eigentlich ein String ist. Die Singlequotes vor und nach dem Suchwert veranlassen SQL den Übergabewert nach INT zu casten.

    Fall2
    Ist feld1 INT und $suchwert='3a' gibt es einen Fehler, weil eine Zahl als Suchwert erwartet wird.

    Ähnliche Fehler werden immer wieder bei Single und Double-Quotes gemacht.
    PHP-Code:
    $a 4711;
    echo 
    'Die Zahl lautet $a';
    echo 
    "Die Zahl lautet $a";
    echo 
    "Die Zashl lautet ".$a;

    // oder besser noch
    echo '$a';
    echo 
    "$a";
    echo 
    $a
    Ein nicht ganz triviales Thema, das immer wieder heftig, mit unterschiedlichsten Ansichten diskutiert wird. Das erste echo ist klar, aber die beiden nachfolgenden (also welche die richtige Schreibweise ist) scheinen eine Religionsansicht zu sein

  4. #4
    Meister(in)
    Registriert seit
    24.02.2007
    Beiträge
    460
    Danke
    0
    Bekam 47 mal "Danke" in 47 Postings

    Standard AW: Verschiedene Apostrophe bei SELECT GREATEST

    Danke für dein Hinweis sysop. Ich kannte das bisher nur bei Systemanweisungen. Aber man lernt ja nie aus.

  5. #5
    Azubi(ne)
    Registriert seit
    19.03.2012
    Beiträge
    64
    Danke
    1
    Bekam 10 mal "Danke" in 9 Postings

    Standard AW: Verschiedene Apostrophe bei SELECT GREATEST

    Das sollte natürlich keine Klugscheisserei sein.

    Nicht korrekte Syntax (in diesem speziellen Fall wird das Statement ja dann von der MYSQL-Datenbank verarbeitet) ist oft der Grund, wieso Scripte in PHP 4.x laufen und unter 5.x dann nicht mehr.
    Ich persönlich finde das Suchen nach solchen Syntaxfehlern generell anstrengender als den Code gleich neu zu schreiben.

Ähnliche Themen

  1. Select-Anweisung GREATEST
    Von scabinho im Forum Datenbank Forum - MySQL und andere Datenbanksoftware
    Antworten: 3
    Letzter Beitrag: 28.04.2015, 13:09
  2. Mit nem Multiple Select in verschiedene Felder einer db eintragen?
    Von funbox im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 26.04.2009, 22:09
  3. JavaScript: select-box onchange: neue select-box
    Von Jan_K im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 20.08.2008, 16:43
  4. verschiedene Skins für verschiedene Ordner einer Seite?
    Von tomrakete im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 1
    Letzter Beitrag: 23.07.2007, 11:48
  5. problem mit Pulldown-Menü (<select></select>)
    Von magicgerd im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 23.01.2006, 18:38

Stichworte

Berechtigungen

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