Prob mit schreiben auf mySQL
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuell zeile
aktuellen stand
anfrage
befehl
code
datenbank
datensatz
entwickeln
ergebnis
erweiterung
fehler
probier
problem
set
sonderzeichen
taler
test
transaktion
update
wert schreiben
-
Hi,
ich habe ein Problem mit mySQL. Ich will ein Taler (wie bei euch Gulden) entwickeln.
Allerdings gibt es ein Problem mit dem Schreiben auf die DB!
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Counter</title>
</head>
<body>
<?php
$db=mysql_connect("localhost","root","")
or die ("<b>Zur Zeit kein Connect zum Datenbankserver!</b>");
mysql_select_db("manitu")
or die ("<b>Datenbank konnte nicht angesprochen werden</b>");
$anfrage="SELECT * FROM test";
$ergebnis=mysql_query($anfrage)
or die ("<b>Fehler bei der Datenbankanfrage</b>");
$zeile=mysql_fetch_row($ergebnis);
//Aktuellen Stand um 5 erh?hen:
$aktuell=$zeile[4]+5;
//Neuen Wert schreiben
$anfrage="UPDATE test SET taler='";
$anfrage.=$aktuell;
$anfrage.="'";
mysql_query($anfrage)
or die ("<b>Fehler bei der Datenbankanfrage</b>");
mysql_close($db);
?>
</body>
</html>
Wenn ich die Datei ausf?hre, dann wird nur der Stand in der mySQL-Datenbank angezeigt, der eh schon da war!
Kann mir jemand helfen?
mawes -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
probier die Transaktion in der DB mal zu comitten...
einfach for dem 2. SELECT ein
commit;
http://de2.php.net/manual/de/function.mysqli-commit.php
mysqli_commit($db_connection);
absetzen -
Folgende Angabe ist soweit nicht in Ordnung:
$anfrage="UPDATE test SET taler='";
Wo ist da das Taler-Set???
au?erdem w?rde ich ne ID-Spalte in die Datenbank aufnehmen, der die Nr. 1 z.B. enth?lt. Dann w?rde ich die Updateanweisung mit "WHERE ID=1" erweitern. Dies ist wesentlich sicherer, da sonst die MySQL Anweisung l?nger braucht und alle Datens?tze ver?ndern will!!! -
$anfrage="UPDATE test SET taler='";
$anfrage.=$aktuell;
Da wird der Talerwert gesetzt.
Habe mir jetzt aber deinen code erstaml angeguckt...
es ist doch viel zu umst?nflich, den wert ERST aus der DB zu lesen, ihn zu erh?hen und dann wieder zur?ckzuschreiben.
Mach doch "UPDATE test SET taler = taler + 5;" -
mach mal vor die tabellennamen und feldnamen ein ` und danach auch ein ` aber eigentl. brauchst du das nicht (wird nur bei sonderzeichen ben?tigt)
dann: das mysqli sprachkonstrukt (erweiterung der mysql befehle) wird noch sogut wie nirgends unterst?tz!
probier mal anstatt von mysql_fetch_row mysql_fetch_array zu machen die felder in der variablen heisen dann z.b. $abfrage['taler']
ansonsten ka was da falsch ist! ^^das obige mit den + 5 m?sste auch gehen!
was bringt das commiten?
und frage: ist nur ein datensatz in der tabelle? ansonsten w?rde ich schleunigst ein where einf?gen!!! -
Ja, jetzt hat es sich erledigt!
Hab den Fehler selbst gefunden! Aber trotzdem Thanks f?r eure Hilfe!
Ich habe wieder was gelernt!
---schlie?en--- -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage