habe ein dringendes problem und ich steh mal wieder im wald:
ich habe in einem script die variable $data=$HTTP_POST_VARS die sich aus eingabefeldern einer suchmaske ergibt, mit den angegebenen suchkriterien will ich alle tabellen innerhalb einer datenbank durchlaufen lassen. dafür habe ich eine funktion, die mir alle tabellen innerhalb der datenbank liefert (return_tables()).
$index=retrun tables();
ich lasse jetzt mit einer foreach-schleife alle tabellen durchlaufen ($index)
und für jede tabelle den query erstellen in der form (beispiel)
foreach($index as $i){
$vals=$data;
$sql="SELECT * FROM tabelle WHERE ";
foreach($vals as $element)
{
$sql.="$feld="\'.$element."\'";
*ich hab die funktion abgekürzt, die querysyntax ist okay*
}
$res=mysql_query($sql);
}
das eigentlich problem ist nun:
beim ersten durchlauf wird $vals noch sauber auf $data referenziert und das array zurückgegeben, aber schon beim nächsten durchlauf funktionuiert es plötzlich nicht mehr und $vals ist kein Array mehr, wodurch natürlich eine fehlermeldung zustande kommt. dabei bleibt doch $data eigentlich unberührt, es wird nur darauf verwiesen.
ich habe sogar schon probiert mit variablen bezeichnern zu arbeiten, weil ich dachte, daß $val eventuell nicht überschreiben werden kann aus unerfindlcihen gründen, aber es funktionierte auch nicht, irgendwie wird entweder das Array $data zerstört oder der zeiger steht a ende des Arrays was eigentlich nicht passieren dürfte.
kann mir bitte jemand weiterhelfen?
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
.... mh, ganz blicke ich nicht durch, aber ein paar Gedanken:
welchen Datentyp hat $vals - erfolgt hier möglicherweise ein (unbeabsichtigter) impliziter Cast?
- hast du den Code mit Angabe der Datentypen getestet?
Wenn $vals ein Array ist, wo greifst du auf die einzelnen Elemente zu?
Hm, ich glaube, nicht wirklich hilfreich - sehe aber auch zuwenig Code, verstehe auch nicht genau, was $data ist ;-(
Have fun,
Z.
oder der zeiger steht a ende des Arrays was eigentlich nicht passieren dürfte.
Hallo xafford,
bei jedem foreach-Durchgang wird der interne Array-Zeiger um 1 erhöht.
Mit der reset-Funktion kannst Du ihn auf das erste Element zurück setzen.
CU Borlander
Hallo xafford,
bei jedem foreach-Durchgang wird der interne Array-Zeiger um 1 erhöht.
Mit der reset-Funktion kannst Du ihn auf das erste Element zurück setzen.
CU Borlander
danke zaphod und borlander, habe mich für einen workaround entschieden, da das problem ziemlich seltsam ist und eigentlich nichts geholfen hat.