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