Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   [mySQL] insert wenn noch nicht existent sonst update (https://www.delphipraxis.net/125718-%5Bmysql%5D-insert-wenn-noch-nicht-existent-sonst-update.html)

_frank_ 10. Dez 2008 12:25

Datenbank: mysql • Version: 5 • Zugriff über: php

[mySQL] insert wenn noch nicht existent sonst update
 
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

soulies 10. Dez 2008 12:33

Re: [mySQL] insert wenn noch nicht existent sonst update
 
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

_frank_ 10. Dez 2008 12:36

Re: [mySQL] insert wenn noch nicht existent sonst update
 
alle 3 Spalten sind varchars :)

Gruß Frank

Bbommel 10. Dez 2008 12:46

Re: [mySQL] insert wenn noch nicht existent sonst update
 
Moin, einfach mal die Klammern nach dem KEY UPDATE weggelassen?

Jedenfalls stehen in der Syntax-Beschreibung keine.

Bis denn
Bommel

_frank_ 10. Dez 2008 12:53

Re: [mySQL] insert wenn noch nicht existent sonst update
 
oh, danke, so funktioniert es wirklich
es waren echt die blöden klammern :)

Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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