 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
12.03.2002, 19:39
|
#1
|
|
TP-Insider
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
|
REPLACE Befehl für MySQL
Hallo,
Ich will ein Formular machen, mit dem man sowohl neue Datensätze erstellen kann als auch ändern kann.
Dazu setze ich dann je nach dem ne Variable auf 1 oder 0.
Aber welchen MySQL Befehl soll ich da verwenden?
Hab schon an den REPLACE INTO gedacht,
weiß aber net wie der genau funktioniert.
Könnte mir des einer von euch erklären???
Bitte und Danke
Tobias
|
|
|
12.03.2002, 20:57
|
#2
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Wenn ich das richtig verstehe, suchst Du nach dem SQL-Statement zum aktualisieren einer Spalte? Oder?
PHP-Code:
if($modus == '1'){
$sql = "UPADTE test SET spalte_a='$a', spalte_b='$b', spalte_c='$c' WHERE id='$id'";
// Es müssen natürlich nicht alle Spalten betroffen sein
}
if($modus == '0'){
$sql = "INSERT INTO test spalte_a, spalte_b, spalte_c VALUES('$a','$b','$c')";
// Der Einfachheit halber ohne LIMIT etc.
}
__________________
Give up yourself into the moment — The time is now.
|
|
|
12.03.2002, 21:05
|
#3
|
|
TP-Insider
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
|
So habs ich gemacht (REPLACE Befehl)
Danke für die schnelle Antwort. aber ich hab mich wahrscheinlich bisschen falsch ausgedrückt.
Ich hab ein Formular und wenn der Datensatz schon existiert, wird mit "value" in die Felder der entsprechende Inhalt eingefügt und ein "hidden" Feld mit dem alten Inhalt des Primärschlüssen erzeugt. Dann übergebe ich die Daten mit "action=post".
include("../inc-dat/link_rsroh.php");
$abfrage = "REPLACE INTO pass WHERE benutzer='$alter_benutzer' VALUES ('$benutzer','$passwort','$r_bv','$r_pdf','$r_ae','$r_av','$r_aav','$r_se','$r_sv','$r_st','$r_ag','$bae','$anrede','name')";
$ergebnis = mysql_query($abfrage, $connection);
Geht leider nicht so wie ich es mir ein meiner Phantasie vorstelle.
|
|
|
12.03.2002, 21:55
|
#4
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Ja, das geht mit "UPDATE". Oder reden wir jetzt aneinander vorbei??
__________________
Give up yourself into the moment — The time is now.
|
|
|
12.03.2002, 22:03
|
#5
|
|
TP-Insider
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
|
Funktion des REPLACE Befehls
ja, aber wie setze ich diesen Befehl richtig ein?
Bitte beschreib mir´s möglichst genau.
Ich hab dir ja meinen Quellcode beim letzten mal mit rein geschrieben.
Jetzt hab ich noch folgendes ausprobiert.
Funzt leider auch net:
include("../inc-dat/link_rsroh.php");
$sql_eintrag = "REPLACE INTO pass (benutzer, passwort, r_bv, $r_pdf, r_ae, r_av, r_aav, r_se, r_sv, r_st, r_ag, r_bae , anrede, name) VALUES ('$benutzer','$passwort','$r_bv','$r_pdf','$r_ae','$r_av','$r_aav','$r_se','$r_sv','$r_st','$r_ag','$r_bae','$anrede','$name') WHERE benutzer='$alter_benutzer'";
$eintrag = mysql_query($sql_eintrag, $connection);
|
|
|
12.03.2002, 23:54
|
#6
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Hi !!
Also die Doku sagt:
Zitat:
REPLACE works exactly like INSERT, except that if an old
record in the table has the same value as a new record on a
unique index, the old record is deleted before the new record is
inserted. See section 6.4.3 INSERT Syntax.
In other words, you can't access the values of the old row from
a REPLACE statement. In some old MySQL version it looked like
you could do this, but that was a bug that has been corrected.
When one uses a REPLACE command, mysql_affected_rows() will
return 2 if the new row replaced and old row. This is because in
this case one row was inserted and then the duplicate was
deleted.
The above makes it easy to check if REPLACE added or replaced a row.
|
Und dazu diese Beispiele:
Code:
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
VALUES (expression,...),(...),...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name [(col_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tbl_name
SET col_name=expression, col_name=expression,...
Dein Query sollte dann z.B. so aussehen:
PHP-Code:
<?
include("../inc-dat/link_rsroh.php");
$sql_eintrag = "REPLACE INTO pass (benutzer, passwort, r_bv, $r_pdf, r_ae, r_av, r_aav, r_se, r_sv, r_st, r_ag, r_bae , anrede, name) VALUES ('$benutzer','$passwort','$r_bv','$r_pdf','$r_ae','$r_av','$r_aav','$r_se','$r_sv','$r_st','$r_ag','$r_bae','$anrede','$name')";
$eintrag = mysql_query($sql_eintrag, $connection);
?>
Ich denke mal es lag an dem WHERE... da du das ja nicht mehr brauchst wenn du REPLACE benutzen möchtest. Es wird ja automatisch der Datensatz gelöscht, der den gleichen unique index hat oder ein neuer erstellt. Der Index muß dann natürlich auch im Query gesetzt werden, wenn du vor hast einen Datensatz zu "überschreiben"...
Gruß Jan
Geändert von Stuck Mojo (13.03.2002 um 00:05 Uhr).
|
|
|
13.03.2002, 06:37
|
#7
|
|
TP-Insider
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
|
unique index beim REPLACE BEFEHL
Danke für die Hilfe, nur noch mal ne kleine Frage.
WOher weis cih dass der Zeiger auf den richtigen Datensatz gesetzt wurde?
was ist da mit dem unique index?
Gruß
tobias
|
|
|
13.03.2002, 09:07
|
#8
|
|
TP-Greis
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
|
Zitat:
Original geschrieben von schmobi
Oder reden wir jetzt aneinander vorbei??
|
Ich denke: ja.   Habe Deine Frage wohl etwas mißverstanden, nichts für ungut.
__________________
Give up yourself into the moment — The time is now.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.
|
 |