SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #21  
Alt 01.09.2010, 13:00:55
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von Domi Beitrag anzeigen
das würde ja richtig aussehen, die Frage ist nur, obs bei SELECTs die übere mehrere Tage hinweg laufen Probleme geben kann?

Was nutzt du für ne Engine? Hab hier InnoDB.
Ich kann mir ehrlich gesagt nicht vorstellen, dass das über mehrere Tage hinweg anders sein sollte als wenn das Skript nur ein paar Sekunden läuft.

Hierfür hab ich auch InnoDB verwendet.

Aber mal was anderes: Versuch doch einfach mal das komplette Result-Set des SELECTs in ein Array zu speichern und dann das Array zu durchlaufen statt der Ergebnis-Menge und in dieser Schleife die UPDATEs zu machen.
Wenn Du das Problem dann nicht mehr hast, liegt's ja sehr wahrscheinlich wirklich an der SELECT-Abfrage. Wenn das Problem allerdings immer noch besteht, wird's wohl am Code oder was auch immer liegen.

Gruß, Dennis

Ps: Hab's grad mal mit PDO getestet, da geht so ein UPDATE innerhalb einer SELECT-Schleife tatsächlich nicht. Allerdings macht er gar nichts und schmeißt sofort einen Fehler (sinngemäß: Programmiere anständig oder nutze zur Not USE_BUFFERED_QUERY). Bei PDO könnte man sonst auch fetchAll() verwenden um dieses Problem zu umgehen (was glaub ich nichts anderes ist als mein Vorschlag mit dem Array).
Mit Zitat antworten
  #22  
Alt 01.09.2010, 13:04:39
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von Domi Beitrag anzeigen
klinngt allerings auch plausibel..
Finde ich ehrlich gesagt nicht. Für mich hört es sich wie die Bestätigung an, dass das kein Problem darstellt.

Wenn MySQL eine temporäre Tabelle für den SELECT anlegt, die sich von der tatsächlichen Tabelle unterscheiden kann und der UPDATE sich auf die richtige und nicht die temporäre Tabelle bezieht, dürfte sich das Resultset des SELECTs in der temporären Tabelle nicht ändern.

Gruß, Dennis
Mit Zitat antworten
  #23  
Alt 01.09.2010, 13:32:07
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von Der-Dennis Beitrag anzeigen
Folgende Tabelle:

Code:
id | wert
----------
1  | 5
----------
2  | 10
----------
3  | 15
----------
4  | 20
----------
und folgendes Test-Skript:

PHP-Code:
$sql 'SELECT * FROM tabelle ORDER BY wert DESC';

$result mysql_query($sql);

while (
$row mysql_fetch_assoc($result)) {
  echo 
'ID ' $row['id'] . ' vor Update: ' $row['wert'] . '<br />';

  
$sql 'UPDATE tabelle SET wert = wert - 10 WHERE id = ' $row['id'];
  
$affected mysql_query($sql);

  echo 
$affected ' Datensätze geändert' '<br />';

  echo 
'ID ' $row['id'] . ' nach Update: ' $row['wert'] . '<br />';

liefert bei mir:

ID 4 vor Update: 20
1 Datensätze geändert
ID 4 nach Update: 10
ID 3 vor Update: 15
1 Datensätze geändert
ID 3 nach Update: 5
ID 2 vor Update: 10
1 Datensätze geändert
ID 2 nach Update: 0
ID 1 vor Update: 5
1 Datensätze geändert
ID 1 nach Update: -5

Gruß, Dennis
Also eigentlich irritiert mich dieses Ergebnis. Der UPDATE ändert sofort Inhalte des $row aus dem SELECT. Die Frage ist, was steht anschließend in der Tabelle (SELECT * FROM ..) und vermutlich ist AUTOCOMMIT aktiv. D.h. jeder UPDATE macht automatisch einen COMMIT und schreibt die Änderungen in die Tabelle ...hmm

Ich arbeite zumeist mit PDO.

Grüße
Thomas
Mit Zitat antworten
  #24  
Alt 01.09.2010, 13:40:52
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Hey Thomas,

Zitat:
Zitat von thomas_w Beitrag anzeigen
und vermutlich ist AUTOCOMMIT aktiv. D.h. jeder UPDATE macht automatisch einen COMMIT und schreibt die Änderungen in die Tabelle ...hmm

Ich arbeite zumeist mit PDO.
Autocommit ist doch standardmäßig immer aktiviert, oder? Dann wird's auch bei mir der Fall sein.

Ich nutze auch nur noch PDO und da besteht, wie vorher beschrieben, auf jeden Fall das Problem.

Gruß, Dennis
Mit Zitat antworten
  #25  
Alt 01.09.2010, 13:52:03
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von thomas_w Beitrag anzeigen
Also eigentlich irritiert mich dieses Ergebnis.
Mich auch... :-)

Jetzt hab ich genau das gemacht, worüber ich vorher beschwert habe. Sorry! Ich hab den falschen Code gepostet (oder besser: einen Teil meines ersten und einen Teil meines zweiten Tests).

Also hier der richtige Code (zum selber ausprobieren ;-) ):

PHP-Code:
$sql 'SELECT * FROM tabelle ORDER BY wert DESC'

$result mysql_query($sql); 

while (
$row mysql_fetch_assoc($result)) { 
  echo 
'ID ' $row['id'] . ' vor Update: ' $row['wert'] . '<br />'

  
$sql 'UPDATE tabelle SET wert = wert - 10 WHERE id = ' $row['id']; 
  
$affected mysql_query($sql); 

  echo 
$affected ' Datensätze geändert' '<br />'

  
$sql 'SELECT * FROM tabelle WHERE id = ' $row['id']; 
  
$result2 mysql_query($sql);

  
$row2 mysql_fetch_assoc($result2);

  echo 
'ID ' $row2['id'] . ' nach Update: ' $row2['wert'] . '<br />'

Wird hoffentlich nicht mehr vorkommen.

Gruß, Dennis
Mit Zitat antworten
  #26  
Alt 01.09.2010, 14:25:05
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: UPDATE verfälscht SELECT?

Hallo Dennis,

jetzt bin ich aber beruhigt, ich dachte schon, ich gebe jetzt meinen "Schein" ab. Aber okay, nun ist wieder alles im grünen Bereich.

OT:

Ich verwende ganz gerne PDO, aber leider wird PDO in letzter Zeit nicht mehr(?) weiter entwickelt. Die speziellen PECL-Treiber (z.B. für IBM DB2 oder ORACLE) sind inzwischen deutlich besser und aktueller als die PDO Varianten.

Grüße
Thomas
Mit Zitat antworten
  #27  
Alt 01.09.2010, 14:35:30
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von thomas_w Beitrag anzeigen
Ich verwende ganz gerne PDO, aber leider wird PDO in letzter Zeit nicht mehr(?) weiter entwickelt. Die speziellen PECL-Treiber (z.B. für IBM DB2 oder ORACLE) sind inzwischen deutlich besser und aktueller als die PDO Varianten.
Ich arbeite zur Zeit nur mit MySQL, daher weiß ich nicht, wie es um PDO mit den anderen DBMS bestellt ist.
Ich hab aber irgendwo mal gelesen (weiß aber leider nicht mehr wo), dass PDO vorerst nicht weiterentwickelt wird und nur Bugfixes vorgenommen werden, bis PHP 6 einen halbwegs soliden Zustand erreicht hat.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe wird nicht angezeigt Extremefall PHP Grundlagen 9 17.12.2009 08:49:45
update und select in einem wtf123 MySQLi/PDO/(MySQL) 2 03.06.2009 19:38:17
UPDATE und SELECT MrLongbaugh MySQLi/PDO/(MySQL) 2 20.07.2006 12:27:50
Update ohne vorheriges Select? mad-boy MySQLi/PDO/(MySQL) 4 29.07.2003 21:40:26
To Many Connections ProGamer11 PHP Grundlagen 0 18.06.2003 23:52:56


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:50:33 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt