Update von Datenbanktabellen

Alles, was PHP betrifft, kann hier besprochen werden.

Update von Datenbanktabellen

Postby family19660 » 19. January 2012 13:25

Hallo zusammen,

ich schlage mich seit 3 Tagen mit dem Update von Datenbanktabellen rum.

Aufgabe ist es, aus einer Hilfstabelle Werte zu holen und in andere Tabellen zurückzuschreiben mittels UPDATE-Befehl.

Problem dabei sind die Werte in den Variablen $frist1 bis $frist8. Nach dem Auslesen aus der Hilfstabelle steht in diesen eine Zeichenkette im Format 0000-00-00. Diese Zeichenkette und soll in eine andere vorhandene Tabelle im gleichen Format in ein Datenbankfeld vom Typ DATE zurückgeschrieben werden. Dies klappt nicht.

Was mache ich falsch? Der Code ist angefügt mit entsprechenden Kommentarzeilen

Code: Select all
<?php

 error_reporting(E_ALL);

$server = "localhost";
$user = "root";
$passwort = "******";
$datenbank = "verwaltung";
$verbindung = mysql_connect($server, $user, $passwort) or die ("Es konnte keine Verbindung hergestellt werden!");
mysql_select_db($datenbank, $verbindung) or die ("Die Datenbank existiert nicht!");


// suche in der Hilfstabelle _01 alle Eintraäge

$suche = mysql_query("SELECT * FROM _01");

while($row = mysql_fetch_row($suche))
   {

// weisst den Variablen die Werte aus der Hilfstabelle zu
   
   $vorgangsnummer =  $row[0];
   $frist1 = $row[1];
   $frist2 = $row[2];
   $frist3 = $row[3];
   $frist4 = $row[4];
   $frist5 = $row[5];
   $frist6 = $row[6];
   $frist7 = $row[7];
   $frist8 = $row[8];
   $aktenzeichen = $row[9];


// schreibe die Daten in die entsprechende Tabelle
   
$ersetzen =   mysql_query("UPDATE `$aktenzeichen` SET   frist1 = '$frist1',
                 frist2 = '$frist2',
                 frist3 = '$frist3',
                 frist4 = '$frist4',
                 frist5 = '$frist5',
                 frist6 = '$frist6',
                 frist7 = '$frist7',
                 frist8 = '$frist8'  WHERE vorgangsnummer = '$vorgangsnummer'");
                     

// Kontollanzeige - alle Werte sind gefüllt
echo "$frist1<br>";
echo "$frist2<br>";
echo "$frist3<br>";
echo "$frist4<br>";
echo "$frist5<br>";
echo "$frist6<br>";
echo "$frist7<br>";
echo "$frist8<br>";
echo "___________________________<br>";


                     
// in der Variable frist1 steht 2012-01-10 in die Datenbank geschrieben wir in das Feld frist1 mit dem Type DATE  2012-06-01
// in der Variable frist2 steht 2012-04-10 das Feld frist2  mit dem Typ DATE wird aber mit 0000-00-00  aktualisiert
// Variablen frist3 bis frist8 sind gefüllt. Datenbankfelder in der Tabelle werden nicht aktualisiert


// leeren aller Variablen um Fehler in der while-Schleife zu vermeiden
                     
   $vorgangsnummer =  "";
   $frist1 = "";
   $frist2 = "";
   $frist3 = "";
   $frist4 = "";
   $frist5 = "";
   $frist6 = "";
   $frist7 = "";
   $frist8 = "";
   $aktenzeichen = "";
   
   }
?>



Gruß Steffen
family19660
 
Posts: 16
Joined: 27. March 2009 20:17
Operating System: Windows 7 - php 5.3.8

Re: Update von Datenbanktabellen

Postby Altrea » 19. January 2012 18:24

family19660 wrote:Aufgabe ist es, aus einer Hilfstabelle Werte zu holen und in andere Tabellen zurückzuschreiben mittels UPDATE-Befehl.


Warum nutzt du keine:
?

Scheint mir reichlich umständlich und fehlerträchtig, was du da versuchst.

family19660 wrote:Dies klappt nicht.

Das ist keine Hilfreiche Fehlerbeschreibung.
Wenn eine Query fehlschlägt, gibt es eine aussagekräftige Fehlerausgabe dazu.
Sollte es diese nicht geben, hast du in deinem Quelltext dafür nicht genug gesorgt.
Von alleine holen sich die SQL-Fehler nicht ab.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Update von Datenbanktabellen

Postby steffen0366 » 19. January 2012 19:12

Hallo Altrea,

ich bin leider kein Profi. Stored procedures oder Views sagt mir nun gar nichts.

Damit ich meinen eigenen Code verstehe, versuche ich zunächst alles schön einfach und übersichtlich aufzubauen, auch wenn es vielleicht umständlich ist.

Eine Fehlermeldung gibt das Script nicht aus. Habe ja dafür extra den Befehl error_reporting(E_ALL); eingesetzt.

Die Frage ist doch nun, warum die Variablen mit dem Inhalt '2012-01-10' nicht korrekt in das Datenbankfeld geschrieben wird und warum die weiteren Felder überhaupt nicht auf den Update-befehl reagieren.


mfg

Steffen
steffen0366
 
Posts: 8
Joined: 10. April 2006 19:10
Location: klockenhagen

Re: Update von Datenbanktabellen

Postby Altrea » 19. January 2012 19:23

steffen0366 wrote:Eine Fehlermeldung gibt das Script nicht aus. Habe ja dafür extra den Befehl error_reporting(E_ALL); eingesetzt.

Nicht alle PHP-Funktionen geben automatisch Fehlermeldungen aus.
Datenbankadapter sind das Paradebeispiel dafür. Hier musst du dafür sorgen, die Fehlermeldungen abzugreifen und entsprechend deinen Bedürfnissen auszugeben oder darauf zu reagieren.

Ich verweise hierzu immer gerne auf den Leitfaden zum SQL Debugging im php.de Wiki

steffen0366 wrote:Die Frage ist doch nun, warum die Variablen mit dem Inhalt '2012-01-10' nicht korrekt in das Datenbankfeld geschrieben wird und warum die weiteren Felder überhaupt nicht auf den Update-befehl reagieren.

Die Fehlerausgabe wird dir hierzu hilfreiche Hinweise liefern.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Update von Datenbanktabellen

Postby family19660 » 20. January 2012 14:13

Hallo,

also die obigen Antworten helfen mir nicht weiter. Bin aber dem Problem aber nicht der Lösung näher gekommen.

Problem bereitet der Update-Befehl immer dann, wenn meine Tabellenname z. B. wie folgt aussieht `144-189`. Soll nun in diese Tabelle per Update ein Datum eingetragen werden, spinnt das System. Anstelle des Datums 2012-01-10 wird in die Tabelle 2012-06-01 geschrieben.

Wie stelle ich es nun an, trotzdem meine Daten zu aktualisieren. Ein umbenennen der Tabellen klappt nicht, da dies ca 1500 sind.

mfg

Steffen
family19660
 
Posts: 16
Joined: 27. March 2009 20:17
Operating System: Windows 7 - php 5.3.8

Re: Update von Datenbanktabellen

Postby Altrea » 20. January 2012 17:11

family19660 wrote:also die obigen Antworten helfen mir nicht weiter.

Ich frage mich nur, wieso sie dir nicht weiterhelfen.
Du lieferst uns keine Fehlerausgaben.
Du zeigst uns nichtmal die SQL-Query in Klartext, welche deiner Meinung nach fehlschlägt.
Wir wissen nichtmal, ob du überhaupt mal versucht hast, diese in Klartext auszugeben.

family19660 wrote:Problem bereitet der Update-Befehl immer dann, wenn meine Tabellenname z. B. wie folgt aussieht `144-189`. Soll nun in diese Tabelle per Update ein Datum eingetragen werden, spinnt das System. Anstelle des Datums 2012-01-10 wird in die Tabelle 2012-06-01 geschrieben.

Dann antworte ich jetzt mal genauso Informationslos wie du:
Bei mir funktioniert es. Tabellenname, Tabellenspalte(n) und Datumsangaben habe ich 1:1 übernommen. Mein Datum spinnt nicht. Schlußfolderung: Du machst wohl etwas verkehrt.

family19660 wrote:Wie stelle ich es nun an, trotzdem meine Daten zu aktualisieren.

Lerne zu debuggen. Ich kann nicht hellsehen und du hilfst uns nicht wirklich dabei dir zu helfen.

family19660 wrote:Ein umbenennen der Tabellen klappt nicht, da dies ca 1500 sind.

1. ist dies auch nicht nötig, denn an den Tabellennamen liegt es nicht.
2. folgen die Tabellennamen einem Schema, welches man programmiertechnisch erfassen kann, ist dies sehr wohl möglich.
3. selbst wenn 2. nicht zutrifft, würde dies klappen. Es ist nur eine Frage des Aufwands und ob man den Zeitansatz für gerechtfertigt hält.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64

Re: Update von Datenbanktabellen

Postby steffen0366 » 20. January 2012 22:29

Hallo Altrea,

irgendwie habe ich das Gefühl das Du mich nur für doof verkaufen willst.

Das gesamte Script ist oben gepostet.

Fehlerausgaben gibt es nicht, da ja per UPDATE Daten in die Datenbank geschrieben werden.

Nur werden nicht die korrekten Daten zurückgeschrieben!

Was meinst Du damit .... "Lerne zu debuggen"?

Deine Aussage "Du machst wohl etwas verkehrt" ergibt sich aus dem Script. Ich mache nichts verkehrt. Der Update_befehl ist es.


Steffen
steffen0366
 
Posts: 8
Joined: 10. April 2006 19:10
Location: klockenhagen

Re: Update von Datenbanktabellen

Postby Altrea » 20. January 2012 22:51

steffen0366 wrote:irgendwie habe ich das Gefühl das Du mich nur für doof verkaufen willst.

Komisch, ich habe denselben Eindruck von dir.

steffen0366 wrote:Das gesamte Script ist oben gepostet.

Dein Script enthält keinerlei Fehlerausgaben. Weder ein mysql_error() noch ein print_r($ersetzen) um die SQL-Query mal auszugeben. Nichts, rein garnichts.
Was soll ich mit dem Code anfangen? Soll ich raten, was dein voriges SELECT an Daten aus der Datenbank holt? Kenne ich deine Datenbankstruktur? Kenne ich die Datentypen und Daten die dort drin stecken? (Um mal garnicht erst von einem Test-DB-Dump zu sprechen, der einem willigen Helfer die Möglichkeit geben würde bei sich lokal eine Testumgebung aufzubauen um dir schon das gesamte Debugging abzunehmen).

steffen0366 wrote:Fehlerausgaben gibt es nicht, da ja per UPDATE Daten in die Datenbank geschrieben werden.

Nein. Fehlerausgaben gibt es nicht, weil du keine einbaust. die (MySQL-)Funktionen von PHP bieten ausreichende Möglichkeiten MySQL Fehler hinreichend auszugeben und analysieren zu können.

steffen0366 wrote:Was meinst Du damit .... "Lerne zu debuggen"?

Verhaltensauffälligkeiten von Codeabschnitten erkennen, eingrenzen und beheben lernen.
Im einfachsten Fall bedeutet das, jede Variable bei jeder Zustandsänderung zumindest mal per echo, print_r(), var_dump() oder var_export() auszugeben. So findet man in der Regel heraus, welcher Codeteil zu dem Fehler führt.

steffen0366 wrote:Deine Aussage "Du machst wohl etwas verkehrt" ergibt sich aus dem Script. Ich mache nichts verkehrt. Der Update_befehl ist es.

Wenn es der UPDATE Befehl ist, ist die Sache doch super für dich. Dann wende dein Anliegen an den MySQL- oder PHP-Bugtracker, denn soetwas gehört gefixt.
Da es auf meiner selbst zusammengebastelten Testumgebung (auf Grundlage deiner mehr als dürftigen Informationslage) aber funktioniert, ist die Wahrscheinlichkeit, dass der Fehler eben doch bei dir (respektive deinen Daten oder scripts) zu suchen ist, ungleich größer.

Ich klinke mich nun hier aus, bis du willig bist, uns bei der Problemfindung zu unterstützen. Es ist schließlich nicht mein Problem, sondern das deinige.

mit noch freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 18 guests