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)
Hilfe Community Kalender Heutige Beiträge Suchen

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

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 31.08.2010, 17:13:12
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: UPDATE verfälscht SELECT?

Hi,

schau dir mal oben nochmal den Code an. Jedes UPDATE betrifft nur genau einen Datensatz, allerdings wird genau das Value upgedatet, nach dem auch sortiert wird. Und genau is der Knackpunkt wo ich nicht weiß, ob vorher die Reihenfolge festgelegt wird und es eigtl. passen müsste oder ob es nachträglich hier zu Verschiebungen kommen kann.

Gruß
Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #12  
Alt 31.08.2010, 17:41:23
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

In Deinem obigen Beispiel bestrifft das Update eben nicht nur genau den einen Datensatz, da die WHERE-Klausel fehlt. Ist aber auch egal, ich glaub ich weiß jetzt was Du meinst.

In diesem Fall spielt die Sortierung (zumindest bei MySQL in einer aktuellen Version; ich weiß nicht wie's früher bei MySQL war oder wie es bei anderen DBMS aussieht) im Nachhinein (also nach der SELECT-Abfrage) gar keine Rolle mehr für das Update (und auch für alles andere nicht mehr).

Du solltest also keine Probleme bekommen.

Gruß, Dennis
Mit Zitat antworten
  #13  
Alt 31.08.2010, 17:47:46
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von Der-Dennis Beitrag anzeigen
In Deinem obigen Beispiel bestrifft das Update eben nicht nur genau den einen Datensatz, da die WHERE-Klausel fehlt. Ist aber auch egal, ich glaub ich weiß jetzt was Du meinst.
Da hast du vollkommen Recht, wohl das Beispiel zu schnell erstellt ;) Habs hinzugefügt. Ja, bin auch der Meinung, dass es keine Rolle spielt, aber irgendwo her muss der Fehler kommen, das Datensätze doppelt behandelt werden. Eigtl bleibt nur das übrig, muss ich wohl irgendwas zu debugen bauen..

Danke trotzdem

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #14  
Alt 01.09.2010, 10:44:27
Der-Dennis Der-Dennis ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
AW: UPDATE verfälscht SELECT?

Wie gesagt, ich mache in einem Cronjob was Ähnliches und das funktioniert ohne Probleme.

Dann viel Erfolg bei der Fehlersuche und halt mich bitte auf dem laufenden, was der Fehler war. Interessant wäre es ja schon zu wissen, wenn das unter bestimmten Umständen was mit Select und Update zu tun hätte.

Gruß, Dennis
Mit Zitat antworten
  #15  
Alt 01.09.2010, 11:46:35
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 Domi Beitrag anzeigen
Hallo Zusammen,

hab nen PHP-Skript auf der Konsole laufen, welches auch gerne mal über Tage hinweg läuft, da es jede Menge Einträge gibt und er für jeden Eintrag ein Skript laufen lass muss, welches nochmals ca. 1 Sekunde dauert.

PHP-Code:

$sql 
'SELECT * FROM table ORDER BY value';

// ...

while ($row mysql_fetch_assoc($result)) {

  
// ...

  
$sql 'UPDATE table SET value = ' $random ' WHERE id = ' $row['id']; 
Für so etwas brauchst Du zwei Datenbankverbindungen, da der Update das ResultSet des Select ändert. Bitte probieren, ob folgende Idee etwas bringt:

PHP-Code:
// ...
$dbSelect mysql_connect('localhost''mysql_user''mysql_password');
$dbUpdate mysql_connect('localhost''mysql_user''mysql_password');


$sql 'SELECT * FROM table ORDER BY value';
mysql_query($sql,$dbSelect);

// ...

while ($row mysql_fetch_assoc($dbSelect)) {

  
// ...

  
$sql 'UPDATE table SET value = ' $random ' WHERE id = ' $row['id'];
  
mysql_query($sql,$dbUpdate); 
Vielleicht eine Lösung....

Grüße
Thomas
Mit Zitat antworten
  #16  
Alt 01.09.2010, 11:51:30
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: UPDATE verfälscht SELECT?

Zitat:
Zitat von thomas_w Beitrag anzeigen
da der Update das ResultSet des Select ändert.
genau das versuche ich andauernd herauszufinden obs wirklich so ist oder nicht, hats ne Quelle dazu?

Domi
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #17  
Alt 01.09.2010, 12:04:57
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: UPDATE verfälscht SELECT?

Eine Quelle habe ich dafür nicht parat, allerdings schon mit anderen Programmen und Datenbanken (nicht PHP, nicht MySQL) ausprobiert und benötigt.

Im Prinzip stellt die Datenbank nach dem "SELECT ..." eine temporäre Datenmenge auf dem DB-Server zur Verfügung, diese temporäre Datenmenge ist nicht unbedingt identisch mit der Tabelle. (Siehe auch Cursor Stability)

Auf diesen "Verbindungskanal" $dbSelect liest (fetch) das Programm Satz für Satz. Wenn jetzt auf diesem Verbindungskanal $dbSelect ein anderer SQL erfolgt, wird die temporäre Datenmenge "gestört/zerstört". Ich denke, da reagiert jede Datenbankengine etwas anderst.

Soweit mal meine Gedanken dazu...

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

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
Mit Zitat antworten
  #19  
Alt 01.09.2010, 12:49:04
Benutzerbild von Domi
Domi Domi ist offline
Senior Member
 
Registriert seit: Nov 2003
Ort: Kempten @ Allgäu
Alter: 36
Beiträge: 1.408
AW: UPDATE verfälscht SELECT?

Hi Dennis,

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.

Zitat:
Zitat von thomas_w Beitrag anzeigen
Im Prinzip stellt die Datenbank nach dem "SELECT ..." eine temporäre Datenmenge auf dem DB-Server zur Verfügung, diese temporäre Datenmenge ist nicht unbedingt identisch mit der Tabelle. (Siehe auch Cursor Stability)

Auf diesen "Verbindungskanal" $dbSelect liest (fetch) das Programm Satz für Satz. Wenn jetzt auf diesem Verbindungskanal $dbSelect ein anderer SQL erfolgt, wird die temporäre Datenmenge "gestört/zerstört". Ich denke, da reagiert jede Datenbankengine etwas anderst.
klinngt allerings auch plausibel..
__________________

the best way to be ready for the future is to invent it
Mit Zitat antworten
  #20  
Alt 01.09.2010, 12:50:36
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 thomas_w Beitrag anzeigen
Eine Quelle habe ich dafür nicht parat, allerdings schon mit anderen Programmen und Datenbanken (nicht PHP, nicht MySQL) ausprobiert und benötigt.
Kleine Korrektur, mit PHP (ODBC) und IBM DB2 hatte ich das Problem auch schon mal so gelöst.

Grüße
Thomas
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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 00:53:54 Uhr.


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


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