Hallo Tom,
das ist sicher ein guter Ansatz, scheinst aber leider auch nicht zu sein. Also kopiere ich mal etwas Code zusammen: (wohl gemerkt sind das Auszüge !!!)
class mysqli_db {
var $link = false; // link zur DB Verbindung wird im Konstruktor erzeugt
var $resid = false; // link sum result der Query. Wird in query() gesetzt.
function __construct() {
$this->link = new mysqli($this->host, $this->user, $this->passwd, $this->tables);
}
function query($sql)
{
if ($this->resid) @$this->resid->free();
$this->resid = $this->link->query($sql);
if (!$this->resid) {$this->echoerror(); return false;}
return $this->resid;
}
function data()
{
if (!is_object($this->resid))
{
if ($this->doerror)
echo ("<b>Keine Abfrage!</b><br>");
return false;
}
$result = $this->resid->fetch_assoc();
return $result;
}
}
der eigentliche code :
$dbi->query("SELECT \* FROM beitraege WHERE 1 LIMIT 3;");
while ($item = $dbi->data())
{
$dbi2->query('
UPDATE beitraege SET myversion ="'.htmlentities($new).'"
WHERE id = "'.$item['id'].'";');
echo ($item['id'].'<>');
} // end while
Wenn ich das Skript laufen lasse wird die While Schleife nur einmal betreten.
Nehme ich die $dbi2->query raus, dann läuft sie wie erwartet 3x durch.
Ändere ich die dbi2 query auf ein UPDATE einer anderen Tabelle wird nur 1x durchlaufen.
Mache ich eine SELECT query wird 3x durchlaufen.
Es war also nicht richtig, dass die Tabelle eine Rolle spielt, sondern ob ein UPDATE oder ein SELECT gemacht wird. UPDATE löscht mir das Ergebnis, SELECT nicht.
Sehr lustig ;-)