[php/mysql] vanuit query de mysql datatypes

Pagina: 1
Acties:
  • 102 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Na enig code krassen met klassen/objecten, templates en een mysql database loop ik tegen het volgende aan:
Aan de hand van het type van de variabele ( string, int, bool, etc ) wil ik, automatisch, een specifiek stukje html neerzetten ( een checkbox, textarea, normaal textfield, etc ).

Nu is het zo dat wanneer een query terug komt met resultaten uit de database, de types van een veld van een tabel ( varchar(x),int,double,ENUM('1','0'), etc ) eigenlijk volledig genegeerd worden en php de array maakt met enkel strings en deze dus niet cast naar een bijpassend php-type.

Waarna ik als nog dus handmatig moet gaan type-casten, wat dus eigenlijk niet de bedoeling is...

de functies fetch_object/array/assoc/row en de verschillende parameters konden ook niet echt een oplossing bieden...

Iemand hier wellicht wel?

mijn dank.

[bewerkje]
Na het stellen van een vraag komt de persoon in kwestie meestal zelf op het antwoord.
http://nl3.php.net/manual/nl/function.mysql-field-type.php
mysql_field_type kan best wat voor mij beteken.. alhoewel de code hierdoor dus wel langer wordt en ik nog steeds niet snap waarom php niet netjes cast naar types vanuit een query 8)7

[ Voor 17% gewijzigd door Verwijderd op 28-09-2007 06:43 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Volgens mij doet de mysql_*-library niet aan datatypen voor de client in php. Misschien dat mysqli_* wel wat meer rekening ermee houdt.

Maar anders zit je inderdaad vast aan het dmv de rest van de functies te casten.

[ Voor 23% gewijzigd door ACM op 28-09-2007 07:27 ]


Acties:
  • 0 Henk 'm!

  • dik_voormekaar
  • Registratie: April 2003
  • Laatst online: 15-09 21:32
Doe maar eens :
code:
1
select * from information_schema.COLUMNS where TABLE_NAME='table'

[ Voor 14% gewijzigd door dik_voormekaar op 28-09-2007 10:36 ]


Acties:
  • 0 Henk 'm!

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
dik_voormekaar schreef op vrijdag 28 september 2007 @ 10:34:
Doe maar eens :
code:
1
select * from information_schema.COLUMNS where TABLE_NAME='table'
of "show field from table"

Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou hier explain voor gebruiken.

SQL:
1
EXPLAIN table

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op vrijdag 28 september 2007 @ 16:44:
Ik zou hier explain voor gebruiken.

SQL:
1
EXPLAIN table
Wat dus dezelfde output geeft als
SQL:
1
SHOW FIELDS FROM table

Acties:
  • 0 Henk 'm!

  • OnTracK
  • Registratie: Oktober 2002
  • Laatst online: 19:36
Misschien helpt het om eens te kijken naar 2e (en eventueel 3e) parameter voor mysql_fetch_object. Als je in je query de kolommen selecteerd die je in je object wil gebruiken, kun je in één keer dat object verkrijgen door de classname mee te geven.

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


Acties:
  • 0 Henk 'm!

  • kokx
  • Registratie: Augustus 2006
  • Laatst online: 13-09 20:30

kokx

WIN

* kokx kijkt snel ff hoe Zend dat ook al weer doet.

Owwja:

PHP:
1
2
<?php
$sql = "DESCRIBE tabel";

Verwijderd

Topicstarter
ok, met explain,describe en show field kan ik een eind komen.

Op het moment heb ik het opgelost met field type
aan de hand daarvan kijk ik met wat voor type ik te maken heb, type-cast deze naar het gewenste php-type en laat vervolgens mijn template-class-ding allerlei mooie dingen doen met de data :P

Ik ga maandag even kijken in hoeverre mysqli rekening houdt met types uit de db.
Mijn bevindingen deel ik graag. tot dan :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ok, /bin/there -done that

MySQLi heeft idd zoals de manual zegt meer "improved extensions" maar rekening houden met mysql- en phptypes ho maar... :/

dus, dan maar terug naar de php-ik-controleer-en-typecast-het-zelf-dan-maar-functie() :X

allen bedankt voor de informatie.

cya!

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Als je weet dat je database een integer veld bevat, en je haalt dat ding uit de database, dan mag het wel een string zijn, maar php cast dat automatisch voor je naar een integer als je er bijv. mee gaat vermenigvuldigen. Dat is juist een van de voordelen van PHP's dynamic typing.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Op zich heb je gelijk, maar ts wil deze feature:
Verwijderd schreef op vrijdag 28 september 2007 @ 06:36:
Aan de hand van het type van de variabele ( string, int, bool, etc ) wil ik, automatisch, een specifiek stukje html neerzetten ( een checkbox, textarea, normaal textfield, etc ).

{signature}

Pagina: 1