Einzelnen Beitrag anzeigen

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, 12: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