[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
MySQL INSERT nur, wenn Wert der Spalte nicht schon vorhanden - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

MySQL INSERT nur, wenn Wert der Spalte nicht schon vorhanden

23. Nov 2012, 19:07

Hallo,

wie kann ich mit MySQL/PHP nur dann den Datensatz einfügen, wenn er noch nicht vorhanden ist? Mein Query sieht etwa so aus:

Code: Alles auswählen

$sql = rex_sql::factory();
$sql->setTable('foo');
$sql->setQuery('
INSERT INTO table
(name , unique_id)
VALUES 
(
"'.$name.'",
"'.$unique_id/* INSERT nur, wenn noch kein eintrag mit diesem wert vorhanden */.'"
)
');
der eintrag soll also nur zugefügt werden, wenn in $unique_id in der Spalte "unique_id" noch nicht vorhanden ist. Gibt es da irgendwas einfaches?
Viele Grüße
cukabeka

NGW
Beiträge: 132
Registriert: 1. Mär 2011, 09:12
Kontaktdaten: Website

Re: MySQL INSERT nur, wenn Wert der Spalte nicht schon vorha

24. Nov 2012, 09:08

Frag doch vorher ab, ob der soein Datensatz schon vorhanden ist...

Code: Alles auswählen

$sql = rex_sql::factory();
$sql->getArray('SELECT * FROM foo WHERE unique_id='.intval($unique_id).' LIMIT 0,1');

if ($sql->getRows() == 0) {
    $sql = rex_sql::factory();
    $sql->setTable('foo');
    $sql->setValue('name', $name);
    $sql->setValue('unique_id', $unique_id);
    $sql->insert();
}
Gruß
Nico

Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

Re: MySQL INSERT nur, wenn Wert der Spalte nicht schon vorha

26. Nov 2012, 19:46

hachja, mysql kann so einfach sein.. :)
danke dir! funktioniert super!

ich frage mich übrigens: macht das LIMIT am Ende die Abfrage ressourcensparender?
Viele Grüße
cukabeka

Zurück zu „Sonstiges“