2016-07-10 12 views
0

Ich verstehe, dass "TABLE" Namen Groß-und Kleinschreibung beachten (abhängig von OS, Linux oder Windows), aber ich habe festgestellt, dass die Feldnamen auch Groß-und Kleinschreibung beachten. Ich lese ein paar Orte, die sagen, dass sie nicht sind. Ich habe viele Informationen zu TABLE NAMES gefunden, aber nicht viel zu FIELDNAMES.mysql case insesitive Feldnamen

In diesem Beispiel wird jedoch ein Fehler gemeldet.

Feldname = „Name“ wenn ich folgende tun - es Fehler aus

edit: vergessen: für eine Laufzeit fix suchen, da dies nicht mein db ist.

SELECT * FROM some_table WHERE name = 'something' 

Dies wird einen Fehler, wenn ich die 'name'-'Name' ändern. 2 Fragen Wenn das meinerseits ein Fehler ist, was mache ich falsch? Wenn nicht, gibt es ein Flag, um dies zu steuern. Es scheint, als wenn die Entwickler mit der Datenbank Affe, manchmal ändern sie Felder aus Gründen, und am Ende mit CamelCase.

Es scheint nur, dass ich redundanten Code schreiben muss, um die Groß- und Kleinschreibung zu berücksichtigen. (Deshalb denke ich, dass ich möglicherweise ein Fehler bin)

Danke!

+0

ich umgestrickt eigentlich dies ein wenig anders, offenbar ist der Fehler nicht aus der Abfrage selbst aus dem von Ergebnis-String [code] while ($ result = mysql_fetch_assoc ($ sql)) { $ result echo [ 'Titel "]; } [/ code] Das Ergebnis ist Groß- und Kleinschreibung - wie verhindere ich das? – Cain

+1

["Bei Spalten-, Index-, gespeicherten Routinen- und Ereignisnamen wird auf keiner Plattform zwischen Groß- und Kleinschreibung unterschieden, auch keine Spaltenaliase"] (http://dev.mysql.com/doc/refman/5.7/en/identifier-case- sensitivity.html), also poste bitte die exakte 'CREATE TABLE' und Fehlerausgabe. – bishop

Antwort

-1

denke ich lower_case_table_names Systemvariable für mysql an Ihrer Maschine auf 0 gesetzt ist, die für Groß- und Kleinschreibung

Wenn es auf 0 gesetzt ist, Tabellennamen gespeichert werden, wie angegeben und Vergleiche sind Groß- und Kleinschreibung. Wenn der Wert auf 1 gesetzt ist, werden Tabellennamen in Kleinbuchstaben auf der Festplatte gespeichert, und bei Vergleichen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Bei 2 werden Tabellennamen wie angegeben gespeichert, jedoch in Kleinbuchstaben verglichen. Diese Option gilt auch für Datenbanknamen und Tabellenaliase.

Zu Ihrer Referenz finden Sie den folgenden Link. http://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivity.html

Ich hoffe, das Ihr Problem lösen

0

Diese auf Ihrem Kommentar basiert, dass PHP ist Groß- und Kleinschreibung mit echo $ result [ ‚Titel‘];

Hier ist eine PHP-Funktion, mit der Sie in PHP für assoziative Arrays Indizes ohne Berücksichtigung der Groß- und Kleinschreibung verwenden können.

$test = array("Name"=>"Russell"); 
echo value($test,"name"); 

function value(&$row,$field) { 
    // Get the value of a field. 
    foreach($row as $key=>$value) { 
     if (strcasecmp($key,$field)==0) { 
      return $value; 
     } 
    } 
    throw new Exception("Field $field wasn`t found."); 
} 
+0

Danke Russell, ich denke, das tut der tricfk, ich hatte gehofft, dass ich die Dokumente falsch gelesen habe und dachte, dass es einen Schalter gab, den ich in der SELECT-Abfrage verwenden könnte. Sie können es hart in der INI-Datei codieren, aber nicht wirklich die Ave. Ich will gehen. Ich werde daran basteln und sehen, wer es funktioniert. – Cain