SQL IF ELSE problem

deintag85

Erfahrenes Mitglied
Hi,

ich hab versucht folgende IF ELSE Abfrage per PHP/SQL zu realisieren, aber leider spuckt er mir eine Fehlermeldung aus

Code:
$cinsert = "IF EXISTS (SELECT * FROM `".$counter."_os` WHERE os='".$betriebssystem."') 
			UPDATE ".$counter."_os SET anzahl=anzahl+1 WHERE os='".$betriebssystem."'
		   ELSE
  		        INSERT INTO `".$counter."_os` (`os`,`anzahl`) VALUES ('".$betriebssystem."',1)";
$cinsert2 = mysql_query($cinsert);
echo mysql_error();

Incorrect table name ''Incorrect table name ''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 'IF EXISTS (SELECT * FROM `1000001_os` WHERE os='Windows Vista') UPDATE 100' at line 1

ALso es geht darum. Die Tabelle existiert bereits, aber er soll erst gucken ob ein Eintrag mit dem Text "xxx" vorhanden ist, wenn nicht dann soll er einen Eintrag erstellen. Wenn doch, dann soll er die Anzahl um +1 erhöhen. Was mache ich falsch?

LG
 
Mir ist nicht bekannt, dass ein Query in der Art in MySQL überhaupt existiert, lasse mich aber gerne belehren.

Üblicherweise würde man vorher überprüfen ob der Datensatz existiert oder man würde es mit einem UNIQUE Index auf os machen und dann
SQL:
INSERT INTO tabelle (anzahl, os) VALUES (1, 'foo')
ON DUPLICATE KEY UPDATE anzahl=anzahl+1
 
Ich hab das hier per GOogle gefunden und dachte es funktioniert auf anhieb

http://blogs.msdn.com/miah/archive/2008/02/17/sql-if-exists-update-else-insert.aspx

Da ist die Rede von stored procedures und außerdem von MSSQL und nicht MySQL

Ich erstelle sämtliche Tabellen dynamisch per PHP und wüsste dann nicht,
wie ich dann gleichzeitig noch den Unique Index setze.

Ganz einfach so in der Art
SQL:
CREATE TABLE `tabelle` (
	`anzahl` INT(10),
	`os` VARCHAR(255),
	UNIQUE INDEX `name_des_index` (`os`)
)
 
Zurück