(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
+
0
-

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)

hury
Člen | 56
+
0
-

Typ serveru: MySQL
Verze serveru: 5.5.38–0+wheezy1 – (Debian)
sloupec – int(10) UNSIGNED

Editoval hury (14. 10. 2014 11:46)

Milo
Nette Core | 1283
+
0
-

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
+
+3
-

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.

hury
Člen | 56
+
0
-

na serveru mam:
Client API version 5.5.38
na locale:
Client API version mysqlnd 5.0.10 – 20111026 – $Id: e707c415db32080b3752b232487a435ee0372157 $
moc diky za tip, to jsem netusil…

Editoval hury (14. 10. 2014 18:27)

hury
Člen | 56
+
0
-

testy neumim, ale chci se to nejak „naucit“…
zksuim, co jsi psal

Milo
Nette Core | 1283
+
0
-

@hury NDB by od toho měla odstínit. Spustit ty testy by se hodilo…