Küçük alan adlarını kullanmak için adodb php kütüphane zorlamak nasıl

2 Cevap php

I'm trying to use adodb for db access in my webapp. However my hosting provider has mysql case sensitive, and I have all my fields in lowercase. But when I call getInsertSQL function, I got them in uppercase.

Küçük harfle kullanmak için ADODB zorlamak için bir yolu var mı?

Ben denedim

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

Ama sürekli oracle, MSSQL ve diğer DBMS ile kullanılmalıdır varsayalım olarak göz ardı edilecek gibi görünüyor

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

Ve ben büyük harfle sütun adları SQL ifadesi var.

2 Cevap

Kutu ADODB üzerinden bu seçeneği vermez. Ben son sürümü indirilebilir ve Büyük için GetInsertSQL (tüm sürücüler için) tüm sütun isimlerini zorlar.

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

Ben henüz denemedim, ama bu son satırı değiştirmek olabilir gibi görünüyor:

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

Sadece daha sonra ADODB yeni bir sürüme güncelleme varsa, yine bu değişikliği yapmak gerekir, unutmayın. Durum tablo adları ve sütun adlarını duyarlı MySQL bir seçenek olduğu için, aynı zamanda bir seçenek olarak bu eklemek ADODB geliştiriciler için tavsiye isteyebilirsiniz.

Gerçekten, veritabanına bağlıdır.

Oracle için, bunu yapabilirsiniz:

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

Oci8po, normal oci8 daha yavaş olması gerekiyordu, ama ben bir fark fark değil. Bu iki küçük sütun adlarının yanı sıra "?" Verir bind parametreleri aksine ":" sütununda