Vinzenz Mai: MYSQL Befehl INSERT INTO mit Bedinung

Beitrag lesen

Hallo,

ich habe eine für mich sehr verzwicket Sache ich führe mit php folgenden code aus:

$eintrag = "INSERT INTO tabelle1 (text, zaeler) VALUES ('$ausgabe', '$zaeler') ON DUPLICATE KEY UPDATE zaeler = zaeler + 1";

$eintragen = mysql_query($eintrag);
}

  
der anfällig für [SQL-Injection](http://de.wikipedia.org/wiki/SQL-Injection) ist. Bitte verwende [mysql_real_escape_string()](http://www.php.net/manual/de/function.mysql-real-escape-string.php), um Variableninhalte für den SQL-Kontext aufzubereiten. Mache gegebenenfalls die Auswirkungen des gut gemeinten PHP-Features [Magic Quotes](http://www.php.net/manual/de/security.magicquotes.php) rückgängig.  
  

> Ich möchte aber nun eine weitere Bedinung einfügen:  
> // generiere Datum von heute  
  
Dafür gibt es [CURDATE()](http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_curdate) (und Synonyme). Es ist auf jeden Fall eine hervorragende Idee, zum Speichern von Datumsangaben in MySQL den dafür passenden Datentyp DATE zu verwenden.  
  

> `$datum = date("Ymd");`{:.language-php}  
> // prüfe ob zum text schon ein eintrag mit dem Datum von heute existiert  
> // wenn ja upate den zaeler +1  
> // wenn nein lege den Datensatz an.  
  
MySQL bietet Dir dafür [INSERT ... ON DUPLICATE KEY UPDATE](http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html). Sorge daher für einen UNIQUE-Index über die beiden Spalten.  
  
Freundliche Grüße  
  
Vinzenz