[PHP] mysql_fetch_object()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik probeer vereenvoudigd het volgende te doen (de data van een $row object valideren):

code:
1
2
3
4
5
6
7
8
9
10
while ($row = mysql_fetch_object($query)
{
   $row = ValideerData($row);
   echo $row->een_veld;
}

function ValideerData($data)
{
    return str_replace(array('&'), array( '&' ),$data);
}


Kan iemand mij in de goede richting schoppen ? Op google krijg ik alleen gevonden dat het object in een array gegooid moet worden waarna ik hem met foreach kan doorlopen, dit is wat ik precies niet wil.

[ Voor 10% gewijzigd door Verwijderd op 29-06-2010 10:56 ]


Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 19-09 22:32
mysql_fetch_assoc. Heb je alle velden als key.

Solar @ Dongen: http://solar.searchy.net/ - Penpal International: http://ppi.searchy.net/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Maar ik wil het wel als object terugkrijgen :/

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
ValideerData valideert niet maar encode juist. En weet je zeker dat je niet gewoon htmlspecialchars() wilt gebruiken? ;)

{signature}


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Je kan prima een object met foreach doorlopen hoor:
PHP:
1
2
foreach ($object as $key => $value)
  $object->$key = str_replace('&', '&', $value);

Je kan alleen niet een str_replace op een object doen, dan krijg je: Catchable fatal error: Object of class stdClass could not be converted to string.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

maar eigenlijk doe je je encoding op de verkeerde plek. Dit moet je namelijk niet doen op het moment dat je het uit de database haalt, maar pas op het moment dat je het daadwerkelijk plaatst in de context. In dit geval is dat dus pas de html special chars loslaten op het moment dat je het ook daadwerkelijk in de html print.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het gaat hier niet om output naar HTML, het was maar een stukje voorbeeld code om de situatie te omschrijven.

De oplossing van MueR werkt perfect. Dank.

Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Verwijderd schreef op dinsdag 29 juni 2010 @ 10:59:
Maar ik wil het wel als object terugkrijgen :/
Dat lukt niet, het is geen echt object. Dat PHP nu doet voorkomen dat het een object is, dat is een ander verhaal.

Daarnaast is mysql_fetch_ojbect() langzamer dan bv. mysql_fetch_assoc().

Acties:
  • 0 Henk 'm!

  • dtech
  • Registratie: Juni 2005
  • Laatst online: 19-09 15:37
Waarom wil je het per se als object terugkrijgen?

Het heeft 0 voordelen t.o.v. de snellere (en logischere) assoc. Bovendien vind ik een row als object terugkrijgen altijd wat vaag: welke klasse is het? (sowieso heb je die niet zelf gedefinieerd) Het moet een generieke klasse zijn en juist daarom vind ik eigenlijk verkeerd om gewoon kolomnamen als attributen op te vragen (ook al vangt php dat met magic getters af).
Pagina: 1