Как заставить библиотеку php adodb использовать строчные имена полей - PullRequest
0 голосов
/ 24 июня 2009

Я пытаюсь использовать adodb для доступа к БД в моем веб-приложении. Однако мой хостинг-провайдер имеет MySQL чувствительный к регистру, и у меня все мои поля в нижнем регистре. Но когда я вызываю функцию getInsertSQL, Я получил их в верхнем регистре.

Есть ли способ заставить adodb использовать строчные буквы?

Я пытался с

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

Но, похоже, это игнорируется, поскольку предполагается, что константа будет использоваться только с oracle, MSSQL и другими СУБД

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

И я получил инструкцию SQL с именами столбцов в верхнем регистре.

Ответы [ 2 ]

0 голосов
/ 27 октября 2009

Зависит от базы данных, действительно.

Для Oracle вы можете сделать:

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

Предполагается, что oci8po медленнее, чем обычный oci8, но я не заметил разницы. Он допускает как строчные имена столбцов, так и "?" параметры привязки в отличие от ": column"

0 голосов
/ 28 июня 2009

Из коробки 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 добавить это как опцию.

...