Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 17:31

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[MySQL] insert nur, wenn Eintrag nicht existiert

Discussion on [MySQL] insert nur, wenn Eintrag nicht existiert within the Web Development forum part of the Coders Den category.

Reply
 
Old 12/10/2014, 20:11   #16


 
Menan's Avatar
 
elite*gold: 0
The Black Market: 169/0/0
Join Date: Sep 2008
Posts: 9,484
Received Thanks: 3,109
Ausserhalb von Funktionen kann man die IF Anweisung soweit ich weiß nicht verwenden in MySQL.
Menan is offline  
Old 12/10/2014, 20:18   #17

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
und wie würde es dann aussehen wenn ich den Query in PHP ausführen will?
Mr.Tr33 is offline  
Old 12/10/2014, 23:21   #18
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Warnuk3r is offline  
Old 12/11/2014, 13:25   #19

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
Joa ... ich vermute es ist immer noch der selbe Fehler
Code:
mysql> IF EXISTS(SELECT `type` FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
		UPDATE `words`
		SET `type` = Value(`type`), `update` = Value(`update`)
		WHERE `wort`= Value(`wort`)
	END
ELSE
	BEGIN
		INSERT INTO `words` (`wort`, `type`, `update`)
		VALUES ('ich', 'Pronomen', '1418036206')
	END
END IF;
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 'IF EXISTS(SELECT `type` FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
' at line 1
Mr.Tr33 is offline  
Old 12/12/2014, 00:34   #20
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Quote:
Originally Posted by Menan View Post
Ausserhalb von Funktionen kann man die IF Anweisung soweit ich weiß nicht verwenden in MySQL.
Quote:
Originally Posted by Warnuk3r View Post
Quote:
Originally Posted by Mr.Tr33 View Post
Joa ... ich vermute es ist immer noch der selbe Fehler
Code:
mysql> IF EXISTS(SELECT `type` FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
		UPDATE `words`
		SET `type` = Value(`type`), `update` = Value(`update`)
		WHERE `wort`= Value(`wort`)
	END
ELSE
	BEGIN
		INSERT INTO `words` (`wort`, `type`, `update`)
		VALUES ('ich', 'Pronomen', '1418036206')
	END
END IF;
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 'IF EXISTS(SELECT `type` FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
' at line 1
Deine erste Zeile ist immer noch falsch.
Warnuk3r is offline  
Old 12/12/2014, 10:42   #21

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
Quote:
Originally Posted by Warnuk3r View Post
Deine erste Zeile ist immer noch falsch.
Ja und wie wäre es denn dann richtig?
Nach den "Vorlangen" im Link gehts ja auch nicht, wie oben beschrieben.
Wenn ich es nicht selbst herausfinden würde, dann würde ich nicht wohl nach Hilfe fragen.
Mr.Tr33 is offline  
Old 12/12/2014, 16:56   #22



 
Shawak's Avatar
 
elite*gold: 0
The Black Market: 259/0/0
Join Date: Apr 2010
Posts: 10,289
Received Thanks: 3,613
versuch mal
Code:
IF (SELECT `type` NOT NULL FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
		UPDATE `words`
		SET `type` = Value(`type`), `update` = Value(`update`)
		WHERE `wort`= Value(`wort`)
	END
ELSE
	BEGIN
		INSERT INTO `words` (`wort`, `type`, `update`)
		VALUES ('ich', 'Pronomen', '1418036206')
	END
END IF;
Shawak is offline  
Old 12/12/2014, 20:56   #23

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
Code:
mysql> IF (SELECT `type` NOT NULL FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEGIN
		UPDATE `words`
		SET `type` = Value(`type`), `update` = Value(`update`)
		WHERE `wort`= Value(`wort`)
	END
ELSE
	BEGIN
		INSERT INTO `words` (`wort`, `type`, `update`)
		VALUES ('ich', 'Pronomen', '1418036206')
	END
END IF;
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 'IF (SELECT `type` NOT NULL FROM `words`  WHERE `wort`= Value(`wort`)) THEN
	BEG' at line 1
Mr.Tr33 is offline  
Old 12/14/2014, 01:28   #24
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Quote:
Originally Posted by Shawak View Post
Code:
SELECT `type` NOT NULL FROM ...
Was ist das denn?

Wie auf StackOverflow beschrieben lässt sich der IF-Block nicht außerhalb von Funktionen verwenden.

Ich würde empfehlen entweder die wort-Spalte als UNIQUE zu definieren (genauer: zu einem UNIQUE-Index hinzuzufügen), oder tatsächlich mehrere Queries zu verwenden.

Ersteres würde auch helfen, die Integrität der Daten sicherzustellen, da dann unter keinen Umständen ein wort-Wert doppelt eingefügt werden kann.

Code:
ALTER TABLE `words` ADD UNIQUE `wort_index`(`wort`);
Mashkin is offline  
Old 12/14/2014, 12:06   #25

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
Man kann aber ein UNIQUE nicht auf ein text Type setzen. Und meine wort Spalte ist ein text Type.
Mr.Tr33 is offline  
Old 12/14/2014, 19:00   #26
 
Mashkin's Avatar
 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,747
Quote:
Originally Posted by Mr.Tr33 View Post
Man kann aber ein UNIQUE nicht auf ein text Type setzen. Und meine wort Spalte ist ein text Type.
Wenn es sich bei den Werten für wort um prinzipiell eher kurze Daten handelt (z.B. ein einzelnes Wort), wäre der VARCHAR-Typ evtl. vorzuziehen.
Dieser wird üblicherweise (anders als TEXT und BLOB) "inline" mit der Zeile gespeichert (TEXT und BLOB verwenden Pointer auf extra gespeicherte Werte). Wenn die Performance oder Größe deiner Tabelle nicht durch sehr lange Text-Werte leiden, wäre VARCHAR die bessere Wahl.

Besonders wenn deine Anwendung auch die wort-Spalte zum Selektieren verwendet, wäre ein inline-Typ mit der Möglichkeit zur Indizierung einem nicht indizierbaren, extern gespeicherten Typ vorzuziehen.
Mashkin is offline  
Old 12/15/2014, 22:01   #27

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
Öhm, weiß jetzt nicht wie weit mir das jetzt wirklich bei meinem Problem hilft, aber ich habe es jetzt einfach mal umgesetzt.



Diese Meldung kommt nur, wenn ich ein Key Length angebe und dies kann ich nur angeben, wenn ich einen Primary Key setze.
Mr.Tr33 is offline  
Old 12/15/2014, 23:09   #28

 
damona's Avatar
 
elite*gold: 199
Join Date: Dec 2010
Posts: 2,161
Received Thanks: 2,696
Setz mal die length von dem varchar auf 255 und teste es nochmal.
damona is offline  
Old 12/15/2014, 23:18   #29

 
Mr.Tr33's Avatar
 
elite*gold: 2778
Join Date: Feb 2012
Posts: 3,527
Received Thanks: 1,044
selbes Problem :/
Mr.Tr33 is offline  
Reply


Similar Threads Similar Threads
PHP / MYSQL Insert REAGIERT NICHT
05/05/2014 - Web Development - 9 Replies
Hallo leute, wollte mittels eines PHP-Scripts Daten in meine Tabelle einfügen. Es kommt auch keine Fehlermeldung wenn ich bsp. OR DIE ("Fail"); hinzufüge, allerdings werden die Einträge einfach nicht in die Tabelle übertragen. Erkennt ihr einen Fehler? <html> <head> <title> Test </title>
MySQL INSERT INTO trägt nicht alle Daten aus Formular ein
08/26/2012 - Web Development - 14 Replies
Hallo, ich wollte mir eine kleine Regi basteln. Dabei stoße ich auf das Problem, dass Username sowie Password eingetragen werden aber die E-Mail nicht. Hier einmal der komplette Code sowie DB: Das Formular: <link rel="stylesheet" type="text/css" href="../style.css" /> <h3>Registrierung</h3> <form action="index.php?page=reg" method="post" id="regist"> <table width="400" border="0" align="center"> <tr>
Mysql 5.5 fehler Account existiert bereits
06/07/2012 - Metin2 Private Server - 6 Replies
Hallo Ich habe seit dem ich Mysql 5.5 benutze den fehler beim hen! cms Account existiert bereits bei jede anmeldung aber account tabelle ist leer bei mysql 5.0 geht alles
[Release] MySQL Insert system
07/18/2010 - CO2 PServer Guides & Releases - 18 Replies
Ello! First of all, this is NOT sourcedependent, which means you can use this on any source without modifying the code. This is an replacement for all of you who still uses normal MySQL queries. Use this code to clean up, make it easier and more orginazed. Here's how it looks: Example: (Original (LOTF for example))
[HELP]C# MySQL Command insert if not exsist?
09/04/2009 - CO2 Private Server - 8 Replies
MySqlCommand Command = new MySqlCommand("INSERT INTO accounts(AccountID,LogonType) VALUES ('" + fillBox.Text + "','3')", Connection); Now, I want it to check if the value of fillBox.Text doesn't excist before making the account, so It wont create the same account. I tried making it in a try, that didn't help, it just make several accounts with the same name. ~Bas



All times are GMT +1. The time now is 17:32.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.