(int) data z DB se vraci jako (string) – Nette 2.0.16
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- hury
- Člen | 56
Ahoj,
nevim uz kde by mohl byt rozdil…
pouzivam nette 2.0.16, PHP 5.4 (local i server)
$db->table(...)->fetch();
na locale, vrati int sloupce (spravne) jako (int)
na serveru, vrati int sloupce (SPATNE) jako (string)
pak mi samozrejme nefunguji podminky
if ($row->id === 1) {
OK
}
ale musim pretypovavat
if ((int) $row->id === 1) {
OK
}
nebo
if ($row->id == '1') {
OK
}
nejaka rada, nebo je to standard chovani?
Diky
Editoval hury (13. 10. 2014 9:53)
- Milo
- Nette Core | 1283
Uměl bys spustit tesy pro Nette Database?
# Vytvořit prázdnou MySQL databázi a uživatele, například obojí nette
cd /tmp
git clone https://github.com/nette/database.git
cd database
composer update
$EDITOR tests/Database/databases.ini
[mysql]
dsn = "mysql:host=localhost;dbname=nette"
user = nette
password = nette
vendor/bin/tester -c tests/php-unix.ini tests
Editoval Milo (15. 10. 2014 13:35)
- Zycon
- Člen | 1
Na localhostu máš zřejmně php zkompilované s novým mysqlnd driverem, který vrací výsledky do správných datových typů, ale na serveru máš php se starým libmysql, které vrací vždy string.
Pro ověření pusť phpinfo a pokud u sekce pdo_mysql vidíš jen
Client API version => 5.5.36
A nikoli něco jako
Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
tak nemáš mysqlnd nainstalováno.