AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken [mySQL] insert wenn noch nicht existent sonst update
Thema durchsuchen
Ansicht
Themen-Optionen

[mySQL] insert wenn noch nicht existent sonst update

Ein Thema von _frank_ · begonnen am 10. Dez 2008 · letzter Beitrag vom 10. Dez 2008
Antwort Antwort
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#1

[mySQL] insert wenn noch nicht existent sonst update

  Alt 10. Dez 2008, 13:25
Datenbank: mysql • Version: 5 • Zugriff über: php
Hallo,
eigentlich stehts eigentlich schon im titel.ich habe eine Tabelle mit einem Primärschlüssel (UserName=varchar).ich möchte diese Tabelle so beabeiten dass ein Datensatz geupdated wird, wenn er existiert und wenn nicht ein Insert durchgeführt wird.
also prinzipiell sowas als einzelne Anweisung:

Code:
    $q="SELECT * FROM `linkliste_prefs` WHERE `UserName`='".$_POST["UserName"]."' LIMIT 1";
    $query=$db->query($q);
    if ($query and ($query!=1))
    {
      $num_rows=$db->num_rows($query);
      if ($num_rows)
      {
        $q="UPDATE `linkliste_prefs` SET `invisible_ids`='".$_POST["idlist"]."' WHERE `UserName`='".$_POST["UserName"]."' LIMIT 1";
      }else
      {
        $q="INSERT INTO `linkliste_prefs` (`UserName`,`invisible_ids`,`invisible_cats`) VALUES ('".$_POST["UserName"]."','".$_POST["idlist"]."','".$_POST["catlist"]."')";
      }
      $query=$db->query($q);
    }
ich hab ein bisschen gegoogled und dies hier gefunden. jedoch hab ich das noch nicht wirklich hinbekommen.
ich habe das u.a. so versucht:
SQL-Code:
 INSERT INTO `linkliste_prefs` ( `UserName` , `invisible_ids` , `invisible_cats` )
VALUES (
'blubb', '2', '3'
) ON DUPLICATE
KEY UPDATE ( `invisible_ids` = '2', `invisible_cats` = '3' )
als Fehlermeldung gibt mir mysql folgendes zurück:
Code:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`invisible_ids`='2',`invisible_cats`='3')' at line 1
ich bin halt von der normalen UPDATE-Syntax ausgegangen...vielleicht kennt sich damit jemand aus und kann mir sagen, was genau falsch ist.

Gruß Frank
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#2

Re: [mySQL] insert wenn noch nicht existent sonst update

  Alt 10. Dez 2008, 13:33
hoi,

ist invisible_ids + invisible_cats als varchar[] o.ä. deklariert ?

falls nicht, versuch
SQL-Code:
INSERT INTO linkliste_prefs (UserName,invisible_ids,invisible_cats)
VALUES ('blubb', 2, 3) ON DUPLICATE
KEY UPDATE (invisible_ids = 2, invisible_cats = 3 ) ;
cya
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#3

Re: [mySQL] insert wenn noch nicht existent sonst update

  Alt 10. Dez 2008, 13:36
alle 3 Spalten sind varchars

Gruß Frank
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#4

Re: [mySQL] insert wenn noch nicht existent sonst update

  Alt 10. Dez 2008, 13:46
Moin, einfach mal die Klammern nach dem KEY UPDATE weggelassen?

Jedenfalls stehen in der Syntax-Beschreibung keine.

Bis denn
Bommel
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: [mySQL] insert wenn noch nicht existent sonst update

  Alt 10. Dez 2008, 13:53
oh, danke, so funktioniert es wirklich
es waren echt die blöden klammern

Gruß Frank
  Mit Zitat antworten Zitat
Antwort Antwort


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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz