Oznámení
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 ;-)