Speicherplatz Vatiable

kesnw

Erfahrenes Mitglied
Hi,

ich möchte in eine Variable Datenbankwerte einlesen um später danach ein weiteres Select zu fahren. Ich habe sehr viele Benutzer in einer Datenbank und möchte alle ID's (32-stellig) mit Komma getrennt in eine Variable speichern. Soll dann etwa so aussehen:

$var = '608488fffd943de59fc7a11442c91b44','6089e1acb806566d5443d20d2ca7922c','609206fcb8bb3e909192e4ff6fc921b5',.....

Später möchte ich ein select auf eine andere DB fahren mit der Bedingung:

WHERE id in ($var)

PROBLEM:

bei über 500 Werte ist der Inhalt plötzlich abgeschnitten und ich habe das Gefühl dass der Speicher der Variable voll ist. Kann das sein Was kann ich dagegen tun?
 
Der Speicher ist sicher nicht voll.

Wie bringst du die DB-Inhalte (id's) in ein Array?
Ist das sauber gelöst?

Wenn die DB-Verbindung wegen Zeitüberschreitung trennt, musst du einen Zähler einbauen und zwei Arrays erstellen (wobei ich nicht denke, das hier das Problem liegen sollte).

Werden beim Einlesen der Daten in die neue DB alle Daten korrekt in die DB eingetragen oder bleibt diese leer?
 
Sorry, das alles zu erklären würde den Rahmen sprengen. Ich versuche das Problem mal weiter einzugrenzen und melde mich dann nochmal.

Die Variable ist tatsächlich korrekt gefüllt, es wird nur nicht alles auf der Seite angezeigt, daran liegt's also schonmal nicht...

Ich nutze übrigens mysql_fetch_object
 
Das ist ja wurscht, ob object oder assoc, wobei object wesentlich schneller ist.

PHP:
$db = mysql_query("SELECT id FROM tabelle ORDER BY id");

while($a = mysql_fetch_object($db)) {
   $db_daten[] = $a->id.",";
}

print_r($db_daten);

Damit kannst du sehen ob die Daten alle im Array gelandet sind.

Die Daten in eine neue DB eintragen ist mit for oder foreach umsetzbar.
 
Also, das klappt. Die Daten sind vollständig.

Mein Problem ist, dass ich anhand dieser IDs wie beschrieben ein zweites Select mache. Ich erzeuge eine Temporäre Tabelle, fahre diverse selects auf verscheidenen Tabellen und fülle die temporäre Tabelle damit. Anschleißend lese ich diese vollständig aus und gebe die Datensätze Zeilenweise durch eine While-Schleife aus. Geht aber nicht. Wenn ich testweise die abgearbeiteten Zeilen für das Füllen der temporären Tabelle ausgebe, dann ist diese Anzahl immer unterschiedliche, so als würde der Seicher voll laufen oder die Abfrage zu lange dauern. Sind insgesamt 659 Inserts nacheinander... Nach x inserts bricht das script automatisch ab und der Seitencode wird nicht weiter verarbeitet. x ist immer unterschiedlich groß... Kann jemand helfen?
 
Zuletzt bearbeitet:
nochmal damit ich es richtig verstehe, du willst Daten aus einer DB in eine andere DB einlesen?

Dafür liest du die alte DB aus in ein Array und willst die Daten dann das Array für die Füllung der anderen DB nutzen? Oder was willst du mit dem Array anfangen?
 
Ich versuch das Problem mal genau zu beschreiben:

Ich habe zwei Datenbanken, eine MSSQL- und eine MySQL-DB. Die eine liegt im Intranet, die andere im Internet. Die Informationen, die ich anzeigen möchte liegen auf beiden Datenbanken verteilt.

Ich kann die Benutzer nach Anfangsbuchstaben sortiert ausgeben, also alle die mit A beginnen, alle die mit B beginnen usw. Aber ich möchte natürlich auch ALLE anzeigen lassen. Ausserdem sind die Benutzer unterschiedlichen Gruppen zugeordnet. Die Grupenzuordnung findet auf der MSSQL-DB statt, die MySQL-DB enthält andere Infos zu den Benutzern.

PROBLEM:
Wenn ich alle anzeigen lassen möchte, selektiere ich zuerst anhand der MSSQL-DB die Benutzer, die z.B. in der Gruppe A sind, das sind 675 von 1500. Die IDs merke ich mir in einer Variable $var. Jetzt erzeuge ich eine temporäre Tabelle X. Anhand der IDs selectiere ich (where id in ($var)) alle notwendigen Infos aus der MySQL-DB und merge mir die in einem Object. Ausserdem selektiere ich noch andere Infos aus drei Tabellen der MSSQL-DB. Das mache ich folgendermassen:

Code:
$i=0;
While($werte = selektiere die 675 von MySQL)
//$werte enthält auch die IDs
{
  $a = selektiere werte aus tabelle A von MSSQL anhand jeweiliger id;
  $b = selektiere werte aus tabelle B von MSSQL anhand jeweiliger id;
  $c = selektiere werte aus tabelle C von MSSQL anhand jeweiliger id;
  $d = selektiere werte aus tabelle D von MSSQL anhand jeweiliger id;
  $e = selektiere werte aus tabelle E von MSSQL anhand jeweiliger id;

  Füge alles in die temporäre Tabelle ein
  echo $i;
}

Wenn ich das anhand der Anfangsbuchstaben mache ist das kein Thema, funktioniert. Wenn ich aber alle 675 ausgeben möchte, dann bricht mein Skript immer ab und zwar immer an einer anderen Stelle (sehe ich am Zähler). Woran kann das liegen?
 
Zurück