Mailinglisten-Archive |
Am Fri, 18 Feb 2005 05:29:37 +0100 schrieb Lutz Zetzsche <Lutz.Zetzsche at sea-rescue.de>: >> $insert = $db->prepeare(); >> >> ->> $insert = false > > Hast Du Dich da nur in der Mail oder direkt im Quelltext > verschrieben? ;-) Auch wenn Du vielleicht gerade an PEAR gedacht hast, > muß es ja auch so heißen: > > $insert = $db->prepare(); > > Um die Zeit sollte man ja auch eben im Bett sein und nicht mehr > programmieren. ;-))) prepare ist schon richtig, habs schnell getippert, neues keyboard, theoretisch wuerde da ja wen es so wie ich in der mail geschrieben habe ein "method not found" kommen, aber im source ist es richtig geschrieben .. sehr seltsam das ganze .. ich schreibs nochmal in pseudo php code er erste teil : -- $db = new MySQLi( [..] ); $query = "select bla from tt"; $select = $db->prepare($query); $select->execute(); $select->bind_result($bla); while($select->execute()) { echo $bla . "\n"; } -- das ganze funktioniert einwandfrei `jetzt dacht ich mir, habsch nen db objekt mit ner validen connection, und ein select statement objekt. mach ich mir nochmal ein prepare fuer ein gleiches insert, -- $db = new MySQLi( [..] ); $query = "select bla from tt"; $select = $db->prepare($query); $select->execute(); $select->bind_result($bla); $query = "insert into tt2 (bla) values(?)"; $insert = $db->prepare($query); $insert->bind_param("s", $bla); // method not found while($select->execute()) { $insert->execute(); } -- so, bahm .. funzt nicht .. prepare liefert FALSE, und kein statement objekt beim 2ten prepare, was aber funzt ist folgendes -- $db = new MySQLi( [..] ); $db2 = new MySQLi( [..] ); $query = "select bla from tt"; $select = $db->prepare($query); $select->execute(); $select->bind_result($bla); $query = "insert into tt2 (bla) values(?)"; $insert = $db2->prepare($query); $insert->bind_param("s", $bla); // und funzt auf einmal ? while($select->execute()) { $insert->execute(); } -- man beim statement objekt close() aufrufen, und dannach kann man ein neues prepare innerhalb der db instanz aufrufen. ich hab das ganze mal weiterverfolgt, wen man sich mittels prepare ein statement objekt holt, wird intern mittels stmt_init ein neues objekt erzeugt. intern geht der client via protokoll zum server und registriert dort unter einer ID ein neues prepared statement. beim naehsten aufruf dann schickt bei execute der client die ID und die parameter zum server. scheinbar gibt es intern im mysqli probleme mit dem handling mehrerer IDs von prepared statements. richtig kann man mit $db->stmt_init() arbeiten, man erhaelt ein statement objekt, welches aber intern nicht so richtig funktioniert .. die methoden der zweiten statement instanz scheinen bei bind_param auf die der ersten zu verweisen .. ist aber auch egal .. ciao Mathias -- __________________________________________ / / http://www.phpn.org / / http://www.ltcgroup.de / / / ____________________________ _/ _/ _/
php::bar PHP Wiki - Listenarchive