phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 12.03.2002, 19:39   #1
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
Question

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
TobiasKa ist offline   Mit Zitat antworten


Alt 12.03.2002, 20:57   #2
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Alt 12.03.2002, 21:05   #3
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg

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.
TobiasKa ist offline   Mit Zitat antworten
Alt 12.03.2002, 21:55   #4
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
Ja, das geht mit "UPDATE". Oder reden wir jetzt aneinander vorbei??
__________________
Give up yourself into the moment — The time is now.
Lars ist offline   Mit Zitat antworten
Alt 12.03.2002, 22:03   #5
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg

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);
TobiasKa ist offline   Mit Zitat antworten
Alt 12.03.2002, 23:54   #6
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
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).
Stuck Mojo ist offline   Mit Zitat antworten
Alt 13.03.2002, 06:37   #7
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg

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
TobiasKa ist offline   Mit Zitat antworten
Alt 13.03.2002, 09:07   #8
TP-Greis
 
Benutzerbild von Lars
 
Registriert seit: Jun 2001
Ort: Bonn-Altstadt
Lars bringt sich richtig ein
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.
Lars ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
REPLACE Befehl für MySQL REPLACE Befehl für MySQL
« Logische Operatoren funzen nicht ??? | Nur Datensätze des aktuellen Datums auslesen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67