Moin,
ich versuche mal die Situation qualitativ zu skizzieren...
1. Ich habe eine Klasse (das Objekt nennen wir mal $sql_temp), die, was verschiedene "resource() of type (mysql result)" speichern kann. Insgesamt vier, hier im BSP mit zwei Ergebnissen von unterschiedlichen SQL-Anfragen (die sich weder schachteln noch kombinieren lassen).
wenn ich jetzt folgendes mache (clone ist in $sql_temp default):
$copy_resources = clone $sql_temp;
geht das:
while($result = mysql_fetch_object($sql_temp->resource1))
{
echo $result->prop;
}
aber wenn ich irgendwann später im gleichen Zug, nachdem obriges ausgeführt wurde versuche:
while($result = mysql_fetch_object($copy_resources->resource1))
{
echo $result->prop;
}
wird er die Schleife ohne Ausgabe abbrechen. Obwohl ich bei var_dump($copy_ressources->ressource1); sowas, wie z. B. "resource(4) of type (mysql result)" stehen habe...
2. Es würde auch nicht gehen, wenn ich sowas mache:
$resource1 = SELECT *...
$resource2 = SELECT * ....
$resources = Array('resource1' => $resource1, 'resource2' => $resource2);
foreach($resources as $key => $value)
{
$copy_resources[$key] = $value;
}
... danach 2x mysql_fetch_object, oder 2x mysql_fetch_assoc oder 2x mysql_fetch_row...
--------
An der ganzen Geschichte wundert mich, dass er bei var_dump($copy_resources['resource1']) sehr wohl sowas, wie z. B. "resource(4) of type (mysql result) ausgeben würde....
---------
Deswegen kam ich auf die Idee mit der "tiefen" Kopie.. Klappt aber nicht -.- Das ganze würde nur klappen, wenn ich die SQL-Anfragen doppelt schreibe.. Das ist aber nicht Sinn der Sache?
Grüße
EDIT: Hintergrund der Geschichte ist eine "Browserweiche" für Brower mit JavaScript und für Browser ohne. Muss ohne get_browser() und dummy-Requests, einzig und allein mit dem <noscript>-Tag implementiert werden. Deswegen sind auch zwei identische Abfragen erforderlich. Da die SQL-Statements mit Joins etc. arbeiten würde ich es vorziehen eine Kopie vom Ergebnis zu machen, wegen Serverlast.
ich versuche mal die Situation qualitativ zu skizzieren...
1. Ich habe eine Klasse (das Objekt nennen wir mal $sql_temp), die, was verschiedene "resource() of type (mysql result)" speichern kann. Insgesamt vier, hier im BSP mit zwei Ergebnissen von unterschiedlichen SQL-Anfragen (die sich weder schachteln noch kombinieren lassen).
wenn ich jetzt folgendes mache (clone ist in $sql_temp default):
$copy_resources = clone $sql_temp;
geht das:
while($result = mysql_fetch_object($sql_temp->resource1))
{
echo $result->prop;
}
aber wenn ich irgendwann später im gleichen Zug, nachdem obriges ausgeführt wurde versuche:
while($result = mysql_fetch_object($copy_resources->resource1))
{
echo $result->prop;
}
wird er die Schleife ohne Ausgabe abbrechen. Obwohl ich bei var_dump($copy_ressources->ressource1); sowas, wie z. B. "resource(4) of type (mysql result)" stehen habe...
2. Es würde auch nicht gehen, wenn ich sowas mache:
$resource1 = SELECT *...
$resource2 = SELECT * ....
$resources = Array('resource1' => $resource1, 'resource2' => $resource2);
foreach($resources as $key => $value)
{
$copy_resources[$key] = $value;
}
... danach 2x mysql_fetch_object, oder 2x mysql_fetch_assoc oder 2x mysql_fetch_row...
--------
An der ganzen Geschichte wundert mich, dass er bei var_dump($copy_resources['resource1']) sehr wohl sowas, wie z. B. "resource(4) of type (mysql result) ausgeben würde....
---------
Deswegen kam ich auf die Idee mit der "tiefen" Kopie.. Klappt aber nicht -.- Das ganze würde nur klappen, wenn ich die SQL-Anfragen doppelt schreibe.. Das ist aber nicht Sinn der Sache?
Grüße
EDIT: Hintergrund der Geschichte ist eine "Browserweiche" für Brower mit JavaScript und für Browser ohne. Muss ohne get_browser() und dummy-Requests, einzig und allein mit dem <noscript>-Tag implementiert werden. Deswegen sind auch zwei identische Abfragen erforderlich. Da die SQL-Statements mit Joins etc. arbeiten würde ich es vorziehen eine Kopie vom Ergebnis zu machen, wegen Serverlast.
Comment