[PHP] mysql_result van count query = string?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik twee mysql_results bij elkaar optel in PHP, beide resultaat van een count query, met als resultaat 0 en 1, krijg ik een uitkomst van 0?

Ziet hij dit als string? Dan zou het alsnog 01 moeten worden en niet 0...

Of mischien een fout in mn code?

Bijvoorbeeld:
PHP:
1
2
3
4
$sql1 = mysql_query("SELECT count(cat_product_id) FROM cat_product WHERE cat_product_groep_id = 1"); // Result: 0
$sql2 = mysql_query("SELECT count(cat_product_id) FROM cat_product WHERE cat_product_groep_id = 2"); // Result: 1

$intProductCount = intval(mysql_result($sql1,0)) + intval(mysql_result($sql2,0));


Dan is $intProductCount == 0? Ook zonder intval...

Acties:
  • 0 Henk 'm!

Verwijderd

edit: nvm (beter TS lezen in vervolg) 8)7

[ Voor 177% gewijzigd door Verwijderd op 06-03-2007 22:50 ]


Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
Dat kan haast niet.. weet je zeker dat die results goed zijn? Echo die eens dan..

Acties:
  • 0 Henk 'm!

  • assembler
  • Registratie: Mei 2004
  • Niet online
"SELECT count(cat_product_id) FROM cat_product WHERE cat_product_groep_id = 1 OR cat_product_groep_id = 2"

Acties:
  • 0 Henk 'm!

Verwijderd

gebruik var_dump om erachter te komen welk type variable je mee te maken hebt.

daarnaast is het netter om (int) te gebruiken in plaats van intval(). leest ook een stuk beter vind ik.

ook geeft mysql_query een resource of boolean false terug. resources kun je niet betrouwbaar casten naar een integer. ik denk daarom ook dat je niet een 0 en een 1 terug krijgt maar eerder een true en een false. zie ook de === operator om hier tegen te checken.

je zult de resource moeten verwerken om de count eruit te krijgen die kan je niet zomaar casten. daarnaast is de query zoals assembler die hierboven geeft een stuk beter en netter en waarschijnlijk ook sneller.

zie ook:
http://nl3.php.net/manual/en/function.mysql-query.php (ja, return value: resource en dus geen integer)
http://nl3.php.net/manual/en/ref.mysql.php (hoofdstuk over hoe mysql te gebruiken)
http://nl3.php.net/manual/en/language.types.php (basis kennis om te kunnen werken met php)
http://nl3.php.net/manual...e.types.type-juggling.php (lees vooral deze goed door)

*edit:
zie dat je al mysql_result gebruikt. geef eens een var_dump op sql1 en sql2. ik denk dat je met een 3d array te maken hebt. ook verandert de structuur als de query van assembler gebruikt.

[ Voor 8% gewijzigd door Verwijderd op 06-03-2007 23:44 ]


Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 24-05 15:42
Verwijderd schreef op dinsdag 06 maart 2007 @ 23:39:s het netter om (int) te gebruiken in plaats van intval(). leest ook een stuk beter vind ik.

ook geeft mysql_query een resource of boolean false terug. resources kun je niet betrouwbaar casten naar een integer. ik denk daarom ook dat je niet een 0 en een 1 terug krijgt maar eerder een true en een false. zie ook de === operator om hier tegen te checken.

je zult de resource moeten verwerken om de count eruit te krijgen die kan je niet zomaar kasten. daarnaast is de query zoals assembler die hierboven geeft een stuk beter en netter en waarschijnlijk ook sneller is.
Beter lezen, hij gebruikt mysql_result() om de data uit de resource te halen, dat werkt prima.

De query die assembler geeft is inderdaad sneller en netter maar dan is er geen kans meer om de counts apart te gebruiken, en misschien heeft de TS dat ook nodig..

[ Voor 11% gewijzigd door HyperioN op 06-03-2007 23:43 ]


Acties:
  • 0 Henk 'm!

Verwijderd

HyperioN. schreef op dinsdag 06 maart 2007 @ 23:40:
[...]
Beter lezen, hij gebruikt mysql_result() om de data uit de resource te halen, dat werkt prima.

De query die assembler geeft is inderdaad sneller en netter maar dan is er geen kans meer om de counts apart te gebruiken, en misschien heeft de TS dat ook nodig..
klopt, inderdaad. de query van assambler telt beide bij mekaar op. een var_dump zou meer duidelijk maken denk ik.
Pagina: 1