2009-06-23 15 views
0

webappでdbアクセスにadodbを使用しようとしています。 しかし私のホスティングプロバイダは、mysqlの大文字と小文字を区別します。 と私は小文字のフィールドをすべて持っています。しかし、私はgetInsertSQL関数を呼び出すと、 私は大文字でそれらを持っています。adodb PHPライブラリに小文字のフィールド名を使用させる方法

adodbに小文字の使用を強制する方法はありますか?

は私が

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

にしようとしたが、Oracle、MSSQLおよび他のDBMS

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

で使用すると仮定される定数として無視しているようだと私はとのSQL文を得ました列名は大文字です。

答えて

0

すぐに利用可能なadodbは、このオプションを提供していません。私は最新のバージョンをダウンロードし、GetInsertSQLのすべての列名(すべてのドライバ用)を大文字にします。

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 . ", "; 
    } 
} 

私はそれをテストしていませんが、あなたはこれに最後の行を変えることができるように思える:

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

はちょうどあなたが後でADODBの新しいバージョンに更新する場合、ことに注意してください、この変更をもう一度行う必要があります。大文字と小文字を区別するテーブル名とカラム名はMySQLのオプションであるため、オプションとして追加することをadodbの開発者に提案することもできます。

0

実際にデータベースによって異なります。

Oracleの場合、あなたが行うことができます:

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

oci8poは、通常のOCI8よりも遅くすることになっているが、私は違いを気づいていません。これは、小文字の列名と "?" ":column"とは対照的にバインドするパラメータ

関連する問題