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 |
#2 · Zasláno: 18. 11. 2017, 21:00:48
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 |
#3 · Zasláno: 18. 11. 2017, 21:32:46
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 |
#4 · Zasláno: 18. 11. 2017, 23:11:36
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 * |
#5 · Zasláno: 18. 11. 2017, 23:27:03
pcmanik:
Porovnávání stringů v Javě pomocí == se chová podobně neintuivivně pro jazyka neznalého.
|
||
pcmanik Profil |
#6 · Zasláno: 19. 11. 2017, 00:19:02
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ť. |
||
Časová prodleva: 6 let
|
0