Autor Zpráva
ServIT
Profil
Zdravím ...

plácám se s jednou funkcí ... stále mi vyhazuje chybu na místě, kam by se program neměl vůbec dostat. nakonec jsem izoloval místo, kde k chybě dochází.

        self::$db_ok = FALSE;
        if ( $conn instanceof MySQLiAcc ) {
            self::$dbc = $conn;
            $cdb = self::$dbc->get_current_database();
            if( $cdb == DATABASE_NAME ) {
                self::$db_ok = TRUE;
                trigger_error( 'FAKT TRUE ? '.BR.'self::db_ok: '.(self::$db_ok?'true':'false').' database : '.$cdb.' -> '.DATABASE_NAME );
            }
        } else   {
            self::$dbc = FALSE;
            trigger_error( 'Proměnná $conn očekávaná jako instance MySQLiAcc ', E_USER_ERROR );
        }

V logu vidím
FAKT TRUE ?
self::db_ok: true database : 0 -> SkladTest.

čili :
$cdb = 0,
DATABASE_NAME = 'SkladTest' ,
porovnání $cdb == DATABASE_NAME vrátí TRUE

Vidí tam někdo chybu ? Kde ? nerozumím tomu.

Předem děkuji

Milan
Keeehi
Profil
Je to kvůli přetypování. Integerová nula je opravdu rovna jakémukoli stringu, který nelze převést na číslo
0 == "0" -> True
0 == "1" -> False
0 == "Foo" -> True

Za prvé si pořádně prostuduj dokumentaci metody get_current_database a zjisti, v jakých případech co vrací. Za druhé nejspíš bude stačit, když použiješ tři rovnítka.
ServIT
Profil
Ježiš ... jsem myslel, že podobné špeky jsou jen v Javě , jo, děkuji a 3 rovnítka stačí ... tohle jsem fakt netušil.
Ta funkce vrátí řetěz ( jméno aktuální databáze ) nebo 0 .. jsem si teda naběhl

děkuji
pcmanik
Profil
ServIT:
Ježiš ... jsem myslel, že podobné špeky jsou jen v Javě
V jave asi ťažko keďže sa jedná o silne typový jazyk. Ten ti ani nedovolí porovnať string a int pokým jedno z nich nepretypuješ. Myslel si zrejme JavaScript.
Tomáš K.
Profil *
pcmanik:
Porovnávání stringů v Javě pomocí == se chová podobně neintuivivně pro jazyka neznalého.
pcmanik
Profil
Tomáš K.:
Porovnávání stringů v Javě pomocí == se chová podobně neintuivivně pro jazyka neznalého.
Pravda, asi som si už na to zvykol. Alebo skôr mam to šťastie že s Javou moc nemusím robiť.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: