php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-07-2010, 20:43
Blaxmon
 Registrierter Benutzer
Links : Onlinestatus : Blaxmon ist offline
Registriert seit: Jul 2010
Beiträge: 4
Blaxmon befindet sich auf einem aufstrebenden Ast
Standard MySQL Update Problem

Folgendes Problem in Stichworten:
- Ich öffne eine Datenbank/Tabelle und lese Daten aus
- Mit diesen Daten errechne ich bestimmte andere Daten
(so weit so gut, funktioniert alles wunderbar wie Testausgaben gezeigt haben)
- Diese Daten möchte ich nun wahlweise in diese oder in eine andere Tabelle (beides probiert, beides funktioniert nicht) schreiben (via Update)

Mein Problem: Ich weiß einfach nicht weiter (warum es nicht funktioniert).
Und die Fehlermeldung ist einfach nur für jeden Durchgang " : ", sprich leer.

PHP-Code:
// Datenbank 1 (Spiele) geöffnet und Update-Befehl für 2 (Stat) definiert:
<?
(...)
$sql_spieler=mysql_query("SELECT * FROM Spiele");
$up="UPDATE Stat SET Schnitt='$schnitt', Min='$min', Max='$max', Spiele='$spiele' WHERE id='$id'";
?>
<?    
    $count
=1// Zählt Anzahl der Datensätze

    // Datenquelle durchlaufen und einzelne Werte errechnen:
    
while ($show_spieler=mysql_fetch_array($sql_spieler)){
        
$id=$sql_spieler[id];
        
$schnitt;
        
$spiele=0;
        
$min=300;
        
$max=0;
        
$summe=0;
        
// kleine Schleife, funktioniert, nur der Vollständigkeit halber drin gelassen - kann überlesen werden
        
for($lauf=1$lauf<37$lauf++){
           
$temp $show_spieler[$lauf];
           if(
$temp!=0){ $spiele++; }
           
$summe += $temp;
           if(
$max $temp){ $max $temp; }
           if(
$min $temp && $temp != 0){ $min $temp; }
        }
        
$schnitt $summe $spiele;

        
// Update ausführen
        
$update mysql_query($up);
        echo 
mysql_errno($update) . ": " mysql_error($update). "\n";

        
$count++;
    }

?>
Ich habe den Code so gering entfremdet wie gerade nötig (im Prinzip nur den Bereich mit dem Zugang zu der (Online-)Datenbank).

Der Fehler muss in dem zitierten Bereich stecken. Bin um jede Hilfe / jeden Ansatz dankbar!
Mit Zitat antworten
  #2 (permalink)  
Alt 27-07-2010, 21:15
streuner
 Registrierter Benutzer
Links : Onlinestatus : streuner ist offline
Registriert seit: Aug 2009
Ort: Lüneburg
Beiträge: 623
streuner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ähm...wenn ich das richtig sehe, erstellst du den Update Befehl mit Variablen, die Du erst weiter unten befüllst. Wen dem so ist, haben wir schon mal das Problem. Ansonsten solltest Du ein korrektes Debuuging nutzen um Fehler zu finden.

Anbei: Warum hast Du

PHP-Code:
<?
(...)
$sql_spieler=mysql_query("SELECT * FROM Spiele");
$up="UPDATE Stat SET Schnitt='$schnitt', Min='$min', Max='$max', Spiele='$spiele' WHERE id='$id'";
?>
<?
PHP Code geschlossen und direkt danach geöffnet?

mfg streuner
__________________
Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert,
der letzte Netzknoten verkommerzialisert ist, werdet Ihr merken, dass Geld nicht von alleine programmiert.

"Diese Software verdient die 3 großen GGG: --- Gesehen --- Gelacht --- Gelöscht ---"
Mit Zitat antworten
  #3 (permalink)  
Alt 27-07-2010, 21:55
Blaxmon
 Registrierter Benutzer
Links : Onlinestatus : Blaxmon ist offline
Registriert seit: Jul 2010
Beiträge: 4
Blaxmon befindet sich auf einem aufstrebenden Ast
Standard

Hallo Streuner,

erstmal danke für die schnelle Reaktion.

Zitat:
Zitat von streuner Beitrag anzeigen
Ähm...wenn ich das richtig sehe, erstellst du den Update Befehl mit Variablen, die Du erst weiter unten befüllst. Wen dem so ist, haben wir schon mal das Problem.
Das sollte eigentlich unproblematisch sein. Korrigier mich bitte, wenn ich irre - aber soweit ich das gelernt habe erstelle ich da im Prinzip nichts anderes als einen String, der erst durch das Einsetzen unten mit Sinnhaftigkeit befüllt wird (und sich an der Stelle die Variablen holt). Das ist mir als "eleganterer Weg" beigebracht worden, insbesondere sollte man den Befehl mal häufiger benutzen...
Ich habe den Befehl auch unten (ohne den Umweg) eingesetzt gehabt und einzelne Variablen durch Default-Werte ersetzt. Leider blieb beides ohne Erfolg.

Zitat:
Zitat von streuner Beitrag anzeigen
Ansonsten solltest Du ein korrektes Debuuging nutzen um Fehler zu finden.
Das da wäre? Wenn ich bewusst Fehler in die Zeile einbaue, funktioniert das wunderbar mit Fehlernummer, Beschreibung und allem...

Zitat:
Zitat von streuner Beitrag anzeigen
Anbei: Warum hast Du

PHP-Code:
<?
(...)
$sql_spieler=mysql_query("SELECT * FROM Spiele");
$up="UPDATE Stat SET Schnitt='$schnitt', Min='$min', Max='$max', Spiele='$spiele' WHERE id='$id'";
?>
<?
PHP Code geschlossen und direkt danach geöffnet?

mfg streuner

Das ist einfach erklärt, das sind zwei Code-Blöcke aus der Datei. Dazwischen liegt u.a. ein Abschnitt mit HTML-Tags, der mir die Seite auf dem Server ansehnlich formatiert...

Entsprechend deines ersten Ansatzes habe ich hier ein Beispiel, wie es leider auch nicht funktioniert:

PHP-Code:
<?
    $sql_spieler
=mysql_query("SELECT * FROM Spiele");

    
$count=1;
    while (
$show_spieler=mysql_fetch_array($sql_spieler)){
        
$id=$sql_spieler[id];
        
$schnitt;
        
$spiele=0;
        
$min=300;
        
$max=0;
        
$summe=0;
        for(
$lauf=1$lauf<37$lauf++){
           
$temp $show_spieler[$lauf];
           if(
$temp!=0){ $spiele++; }
           
$summe += $temp;
           if(
$max $temp){ $max $temp; }
           if(
$min $temp && $temp != 0){ $min $temp; }
        }
        
$schnitt $summe $spiele;
        
$schn number_format($schnitt2','' ');
        
        
// Variablen vor Ort wo sie auf jeden Fall als deklariert gelesen werden + Defaultbelegung als Test (Min='83')
        
$update mysql_query("UPDATE Stat SET Schnitt='$schnitt', Min='83', Max='$max', Spiele='$spiele' WHERE id='$id'");
        echo 
mysql_errno($update) . ": " mysql_error($update). "\n";
        
$count++;
    }

?>
Mit Zitat antworten
  #4 (permalink)  
Alt 27-07-2010, 22:06
sili
 Registrierter Benutzer
Links : Onlinestatus : sili ist offline
Registriert seit: Feb 2004
Beiträge: 115
sili ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Die Zeile
Zitat:
Zitat von Blaxmon Beitrag anzeigen
PHP-Code:
$id=$sql_spieler[id]; 
ist doppelt falsch und sollte so
PHP-Code:
$id=$show_spieler['id']; 
lauten
Mit Zitat antworten
  #5 (permalink)  
Alt 27-07-2010, 22:24
Blaxmon
 Registrierter Benutzer
Links : Onlinestatus : Blaxmon ist offline
Registriert seit: Jul 2010
Beiträge: 4
Blaxmon befindet sich auf einem aufstrebenden Ast
Standard

Oh mein Gott... die Zeile hatte ich zwischendurch mal kurz umgestrickt...

Das tut schon weh - irgendwie, irgendwo...

Danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 27-07-2010, 23:29
eagle275
 Registrierter Benutzer
Links : Onlinestatus : eagle275 ist offline
Registriert seit: Jun 2010
Beiträge: 403
eagle275 befindet sich auf einem aufstrebenden Ast
Standard

da irrst du ein wenig Blaxmon ...

wenn du mit
PHP-Code:
$up="UPDATE Stat SET Schnitt='$schnitt', Min='$min', Max='$max', Spiele='$spiele' WHERE id='$id'"
einen Sql-String zusammenbaust, dann ist der statisch , und wird so verwendet, wie du ihn dort "oben" zusammenbastelst. Dies scheitert aber eigentlich daran, dass die verwendeten Variablen zu diesem Zeitpunkt noch unbekannt - und damit dann "leer" verwendet werden.

Sowas sieht man dann recht deutlich, wenn du dir den SQL-String mittels echo kurz vor seiner Verwendung mal ausgeben lässt, ob er nämlich die erwarteten Werte enthält oder Blödsinn der Form "Where id='' ".....

daher auch der "echo-debugger"^^

ich bin mir eigentlich ziemlich sicher, dass bei dir genau dieser Fehler zuschlägt und deshalb das Schreiben in die Datenbank scheitert ...

diese Where-Klausel wird bei keinem deiner Datensätze Erfolg haben - und die anderen Daten werden auch leer übergeben ....

bau den String am besten "da unten" zusammen, wo du ihn auch brauchst - da sind dir nämlich die benötigten Werte für $id und so weiter bekannt
__________________

Wer LESEN kann, ist klar im Vorteil!

Geändert von eagle275 (27-07-2010 um 23:39 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 28-07-2010, 17:40
Blaxmon
 Registrierter Benutzer
Links : Onlinestatus : Blaxmon ist offline
Registriert seit: Jul 2010
Beiträge: 4
Blaxmon befindet sich auf einem aufstrebenden Ast
Standard

Danke, danke. Läuft alles. Nach dem Hinweis von Sili hätte ich das vielleicht ausdrücklicher hinschreiben sollen: Problem gelöst!


@eagle275: Das mit dem String werde ich bei Gelegenheit noch mal testen, aber es ist sehr gut möglich, dass du da Recht hast. Momentan habe ich die Anweisung "vor Ort" platziert und die ursprüngliche Version noch nicht wieder getestet.
Das Hauptproblem war natürlich die falsch initialisierte id...
Mit Zitat antworten
  #8 (permalink)  
Alt 28-07-2010, 20:06
sili
 Registrierter Benutzer
Links : Onlinestatus : sili ist offline
Registriert seit: Feb 2004
Beiträge: 115
sili ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Blaxmon Beitrag anzeigen
@eagle275: Das mit dem String werde ich bei Gelegenheit noch mal testen, aber es ist sehr gut möglich, dass du da Recht hast.
Es ist nicht nur möglich, dass er recht hat. Er hat ganz sicher recht

Es kann aber sein, dass du das ganze mit sogenannten Prepared Statements verwechselt. Das hat aber nichts mit PHP Variablen zu tun und du solltest dich nochmals einlesen
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Update-Problem mit PHP/mysql wp180 PHP Developer Forum 5 10-02-2009 16:13
MySQL Query Update Problem PHPler SQL / Datenbanken 2 25-12-2007 18:28
Problem mit mysql update stigger SQL / Datenbanken 7 04-09-2006 17:41
Update-Problem mit MySQL Vegeta_D2 SQL / Datenbanken 20 22-10-2004 12:28
Problem mit MySQL UPDATE! figugegu PHP Developer Forum 4 22-09-2003 21:11

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:46 Uhr.