[PHP MySQL] Hergebruiken van mysql result resource

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 10-06 12:46
Is het mogelijk om resource indentifies van results van MySQL queries in PHP te 'hergebruiken'

Ik bijvoorbeeld de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
include_once('./libs/db.php');
include_once('./config/config.php');

$db = new my_db();
$db->db_connect();

$res = $db->query_exec("SELECT VERSION() AS vrs");

$row = mysql_fetch_object($res);

// Hergebruiken van resource?

$row2 = mysql_fetch_object($res);

printf("Test: %s - %s",$row->vrs,$row2->vrs);


Kan ik er voor zorgen dat ik nadat ik een fetch object gedaan hebt, dat de resultaten weer als het ware teruggespoeld worden? en zo ja hoe? :)

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


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
mysql_data_seek($res, 0);

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 01-04 08:48
PHP:
1
2
3
4
5
$row = mysql_fetch_object($res);

// Hergebruiken van resource?

$row2 = $row;

Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 10-06 12:46
Waarom kijk ik daar nou overheen. Ik denk te moeilijk af en toe :$

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


Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 10-06 12:46
EnsconcE schreef op vrijdag 15 december 2006 @ 15:44:
PHP:
1
2
3
4
5
$row = mysql_fetch_object($res);

// Hergebruiken van resource?

$row2 = $row;
Dat is er hergebruik van de row :P

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


Acties:
  • 0 Henk 'm!

Anoniem: 174951

Wat hier dus denk ik gevraagd moet worden is, wat heb je daaraan? voor als je hem niet als object maar als assoc wil gebruiken de tweede keer ofzo?

Ik vermoed dat het wel kan, immers, je $res wordt door mysql_fetch_object als het goed is niet gewijzigd, dus gewoon nog beschikbaar lijkt me.... wel dus, en de oplossing is al gegegevn :)

[ Voor 8% gewijzigd door Anoniem: 174951 op 15-12-2006 15:47 ]


Acties:
  • 0 Henk 'm!

Anoniem: 77658

Let wel op: als je mysql_data_seek op een lege result uitvoert krijg je een warning (of notice?)

in dat geval doe het volgende:
PHP:
1
2
3
4
5
6
//kijken of de result records bevat
if(mysql_num_rows($result))
{
      //zo ja, dan terugspoelen
      mysql_data_seek($result, 0);
}

[ Voor 1% gewijzigd door Anoniem: 77658 op 15-12-2006 15:53 . Reden: iets nettere php ]


Acties:
  • 0 Henk 'm!

  • Keiichi
  • Registratie: Juni 2005
  • Laatst online: 10-06 12:46
Anoniem: 174951 schreef op vrijdag 15 december 2006 @ 15:46:
Wat hier dus denk ik gevraagd moet worden is, wat heb je daaraan? voor als je hem niet als object maar als assoc wil gebruiken de tweede keer ofzo?

Ik vermoed dat het wel kan, immers, je $res wordt door mysql_fetch_object als het goed is niet gewijzigd, dus gewoon nog beschikbaar lijkt me.... wel dus, en de oplossing is al gegegevn :)
Voor als je ongeveer wil weten wat ik er mee van plan ben.

Ik heb een soort van slordig geschreven scripts waar heel veel dezelfde queries worden uitgevoerd. Ik ben nu aan het kijken hoeveel het in snelheid scheelt als ik de queries + resultaten van kleine queries opsla in het geheugen in plaats van MySQL er mee lastig te vallen.

Op den duur probeer ik de script wel te fine-tunen dat ze efficienter met MySQL omgaan. Maar dit dus als poging to quick en dirty fix ;)

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


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Anoniem: 77658 schreef op vrijdag 15 december 2006 @ 15:51:
Let wel op: als je mysql_data_seek op een lege result uitvoert krijg je een warning (of notice?)

in dat geval doe het volgende:
PHP:
1
2
3
4
5
6
//kijken of de result records bevat
if(mysql_num_rows($result))
{
      //zo ja, dan terugspoelen
      mysql_data_seek($result, 0);
}
Misschien mierenneukerij maar mysql_num_rows() returned een int en geen true of false dus lijkt het me logischer dat je daar ook op checkt:

PHP:
1
2
3
4
if ( mysql_num_rows ( $result ) > 0 )
{
      mysql_data_seek ( $result, 0 );
}

March of the Eagles


Acties:
  • 0 Henk 'm!

  • martennis
  • Registratie: Juli 2005
  • Laatst online: 02-06 15:48
de eerste is C-style ;)

Acties:
  • 0 Henk 'm!

Anoniem: 77658

Hacku schreef op vrijdag 15 december 2006 @ 16:40:
[...]


Misschien mierenneukerij maar mysql_num_rows() returned een int en geen true of false dus lijkt het me logischer dat je daar ook op checkt:

PHP:
1
2
3
4
if ( mysql_num_rows ( $result ) > 0 )
{
      mysql_data_seek ( $result, 0 );
}
Volgens php is alles wat niet 0 is hetzelfde als true. Dus dit hoeft niet. PHP heeft juist als grootte voordeel dat je de verschillende types met elkaar kunt vergelijken (http://nl2.php.net/manual....operators.comparison.php en http://nl2.php.net/manual/en/language.types.boolean.php)
To explicitly convert a value to boolean, use either the (bool) or the (boolean) cast. However, in most cases you do not need to use the cast, since a value will be automatically converted if an operator, function or control structure requires a boolean argument.

Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Toch is het raadzaam om toch goed te checken, dus integers met integers en booleans met booleans. strPos() kan bijvoorbeeld 0 returnen terwijl dat niet gelijkstaat aan een boolean false. Bij weak-typed talen kan je je dus behoorlijk wat debugwerk besparen als je gewoon je if-jes goed maakt.

[ Voor 20% gewijzigd door AtleX op 18-12-2006 09:56 ]


Acties:
  • 0 Henk 'm!

  • XWB
  • Registratie: Januari 2002
  • Niet online

XWB

Devver
Anoniem: 77658 schreef op maandag 18 december 2006 @ 09:53:
[...]


Volgens php is alles wat niet 0 is hetzelfde als true. Dus dit hoeft niet. PHP heeft juist als grootte voordeel dat je de verschillende types met elkaar kunt vergelijken (http://nl2.php.net/manual....operators.comparison.php en http://nl2.php.net/manual/en/language.types.boolean.php)


[...]
Dat weet ik, maar ik vind dat niet logisch. Maar dat komt misschien omdat ik ook andere talen gewoon ben.

/edit

En zie ook AtleX :)

[ Voor 69% gewijzigd door XWB op 18-12-2006 09:57 ]

March of the Eagles


Acties:
  • 0 Henk 'm!

Anoniem: 77658

AtleX schreef op maandag 18 december 2006 @ 09:56:
Toch is het raadzaam om toch goed te checken, dus integers met integers en booleans met booleans. strPos() kan bijvoorbeeld 0 returnen terwijl dat niet gelijkstaat aan een boolean false. Bij weak-typed talen kan je je dus behoorlijk wat debugwerk besparen als je gewoon je if-jes goed maakt.
Je hebt gelijk, maar daarvoor heb je ===.
Ik weet wel waar ik het over heb ;)

Hacku, het is idd een beetje apart als je met meerdere talen werkt. Ik zelf werk alleen met PHP en javascript. Dus voor mij is dit vrij normaal.

//edit
overigens werkt de php manual vaak ook op mijn manier.

[ Voor 4% gewijzigd door Anoniem: 77658 op 18-12-2006 10:09 ]

Pagina: 1