2009-06-23 2 views
0

Ich versuche Adodb für DB-Zugriff in meiner Webapp zu verwenden. Allerdings hat mein Hosting-Provider mysql Groß-und Kleinschreibung, und ich habe alle meine Felder in Kleinbuchstaben. Aber wenn ich getInsertSQL-Funktion, aufrufen, habe ich sie in Großbuchstaben.Wie erzwingen Adodb PHP-Bibliothek, Kleinbuchstaben Feldnamen verwenden

Gibt es eine Möglichkeit, Adodb zu zwingen, Kleinbuchstaben zu verwenden?

Ich habe versucht, mit

define('ADODB_ASSOC_CASE', 0); 
$ADODB_ASSOC_CASE = 0; 

Aber es scheint, als konstant ignoriert zu werden ist wohl nur

$conn = &ADONewConnection($this->DbType); 
$conn = PConnect($dbServer,$dbUser, $dbPassword,$database); 
$tableName = "sample"; 
$insertSQL = $conn->GetInsertSQL($tableName,$objDB); 

mit Oracle, MSSQL und anderen DBMS verwendet werden, und ich bekam die SQL-Anweisung mit die Spaltennamen in Großbuchstaben.

Antwort

0

Out of the Box adodb gibt Ihnen diese Option nicht. Ich habe die neueste Version heruntergeladen und zwingt alle Spaltennamen (für alle Treiber) in GetInsertSQL in Großbuchstaben.

foreach($columns as $field) { 
    $upperfname = strtoupper($field->name); 
    if (adodb_key_exists($upperfname,$arrFields,$force)) { 
     $bad = false; 
     if ((strpos($upperfname,' ') !== false) || ($ADODB_QUOTE_FIELDNAMES)) 
      $fnameq = $zthis->nameQuote.$upperfname.$zthis->nameQuote; 
     else 
      $fnameq = $upperfname; 
    ... 
     // Get the name of the fields to insert 
     $fields .= $fnameq . ", "; 
    } 
} 

ich es nicht getestet, aber es scheint, wie Sie die letzte Zeile dieses ändern könnte:

$fields .= strtolower($fnameq) . ", "; 

Seien Sie sich bewusst sein, dass, wenn Sie später auf eine neuere Version von adodb aktualisieren, Sie müssen diese Änderung erneut vornehmen. Da in MySQL die Groß- und Kleinschreibung von Tabellennamen und Spaltennamen eine Rolle spielt, können Sie den Entwicklern von adodb auch vorschlagen, diese Option als Option hinzuzufügen.

0

Hängt von der Datenbank wirklich ab.

Für Oracle können Sie tun:

define('ADODB_ASSOC_CASE', 0); 
$db = NewADOConnection('oci8po'); 

Die oci8po sollten die normalen oci8 langsamer sein als, aber ich habe einen Unterschied nicht bemerkt. Es erlaubt sowohl Kleinbuchstaben als auch "?" Bindeparameter im Gegensatz zu ": column"