tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

chybna detekcia typu stlpca v MySQL databaze

před 10 lety

maX
Člen | 4

Zdravim,

nasledujuci kod v DibiDatabaseInfo.php chybne detekuje typ stlpca LONGTEXT v MySQL databaze ako LONG tym padom je navratova hodnota dibi::INTEGER.

na tomto riadku … if (preg_match(„#$s#i“, $type)) { … ak $type==‚LONGTEXT‘ a $s==‚BYTE|COUNTER|SERIAL|INT|LONG‘ ⇒ preg_match zbehne a mame problem … resp. momentalne ja mam :)

<?php
public static function detectType($type)
{
    static $patterns = array(
        'BYTEA|BLOB|BIN' => dibi::BINARY,
        'BYTE|COUNTER|SERIAL|INT|LONG' => dibi::INTEGER,
        'CURRENCY|REAL|MONEY|FLOAT|DOUBLE|DECIMAL|NUMERIC|NUMBER' => dibi::FLOAT,
        '^TIME$' => dibi::TIME,
        'TIME' => dibi::DATETIME, // DATETIME, TIMESTAMP
        'YEAR|DATE' => dibi::DATE,
        'BOOL|BIT' => dibi::BOOL,
    );

    if (!isset(self::$types[$type])) {
        self::$types[$type] = dibi::TEXT;
        foreach ($patterns as $s => $val) {
            if (preg_match("#$s#i", $type)) {
                return self::$types[$type] = $val;
            }
        }
    }
    return self::$types[$type];
}
?>

před 10 lety

David Grudl
Nette Core | 6806

opraveno