tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

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

dibi na linuxe (webhostingu)

před 11 lety

Cifro
Člen | 245

Ahojte.

Neviem čim to je ale na linuxe mi dibi nechce spravne fungovať. Majme napr. tento kod:

<?php
include('./dibi.compact.php');

dibi::connect(array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'user'      => 'user',
    'pass'      => '',
    'database'  => 'db',
    'charset'   => 'utf8',
    'profiler'  => true
));

    $result = dibi::query('SELECT [url],[title],[big_btns] FROM [nodes] WHERE [main_page] = 1 AND [nav] = 1 ORDER BY [order] ASC');

    dump($result);

    $assoc = $result->fetchAssoc('url,=');

    dump($assoc);

?>

kde dump() je moja obdoba funkcie print_r.

dump($result) – vypise to rovnako aj na windowse aj na linuxe:

DibiResult Object
(
    [driver:private] => DibiMySqlDriver Object
        (
            [connection:private] => Resource id #3
            [resultSet:private] => Resource id #4
            [buffered:private] => 1
        )

    [xlat:private] =>
    [meta:private] =>
    [fetched:private] =>
    [withTables:private] =>
    [class:private] => DibiRow
)

ale dump($assoc) už na linuxe vypiše len prázdne pole, a na windowse pole napr tvaru:

Array
(
    [fotogaleria] => Array
        (
            [url] => fotogaleria
            [title] => Fotogaléria
            [big_btns] => 1
        )

    [o-nas] => Array
        (
            [url] => o-nas
            [title] => O nás
            [big_btns] => 1
        )

    [archiv] => Array
        (
            [url] => archiv
            [title] => Archív
            [big_btns] => 0
        )

Ako to je možné?

před 11 lety

kravco
Člen | 723

ešte by som pridal jeden riadok:

dump($result->count());

aby bolo jasnejšie, kde môže byť problém

před 11 lety

Cifro
Člen | 245

dump($result->count()); vypiše 8, čo je správne lebo toľko položiek ma ten query vybrať.

před 11 lety

David Grudl
Nette Core | 6806

Jiný obsah nebo struktura databáze? Chyba v dump()? Obojí? ;)

před 11 lety

Cifro
Člen | 245

a potom som si všimol že pred dibi::query nesmie byť žiadný vystup, napr.
echo $_SERVER['SERVER_NAME']; lebo to potom vypisuje

Warning: Cannot modify header information - headers already sent by (output started at ..../dibitest.php:38) in ...../dibi.compact.php on line 724

na riadku 38 je to echo a na riadku 724 je prave header () FirePHP pre profilovanie a sa to trieska, ale na ten moj horeuvedený problem to nemá vplyv, ja len tak na okraj… možno som objavil bug

před 11 lety

Cifro
Člen | 245

obsah a štruktúra sú tie isté, lebo to je dump na windowse a import na servery cez phpmyadmin. Sice mal som problemy pri importovani na serveri ale to bolo s views,ale ta tabuľka [nodes] je obyčajná tabuľka, není to view.

funkcia dump() :-)

<?php
function dump($text,$var_dump=false,$both=false){
    echo "<pre style='border:1px solid #eee;background:#ccc;'>";
    if(!$both){
        print_r($text);
    }
    if($var_dump){
        echo "\n-----------------------------------------------------\n";
        var_dump($text);
    }
    echo "</pre>";
}
?>

před 11 lety

David Grudl
Nette Core | 6806

Cifro napsal(a):

na riadku 38 je to echo a na riadku 724 je prave header () FirePHP pre profilovanie a sa to trieska, ale na ten moj horeuvedený problem to nemá vplyv, ja len tak na okraj… možno som objavil bug

Objevil, opravím.

před 11 lety

David Grudl
Nette Core | 6806

Problém je potřeba hledat postupně, takže porovnej jestli dotazy vracejí zcela totožný výstup (třeba přes $result->dump() nebo var_dump($result->fetchAll()). Rozdíl může být i ve velikosti písmen.

před 11 lety

Cifro
Člen | 245

Vyriešené.

Tabuľky boli prázdne, import dat bol až za sql pre views a tam to robilo problemy, takže import dát vobec nenastal. Šak z ničoho musí ťahať len nič :-D Treba mi reset… Na silvestra sa zresetujem.

Ale aspoň som objavil bug v dibi :-)

Prajem zabavný silvester

před 11 lety

kravco
Člen | 723

kravco napsal(a):

ešte by som pridal jeden riadok:

dump($result->count());

aby bolo jasnejšie, kde môže byť problém

Tento môj príspevok smeroval k tomu, aby si zistil, či v oboch prípadoch dostávaš dáta… tú osmičku ti zjavne vypísalo len na windowse ;-)