echo $begrüßung;
Fehlermeldungen gibt es keine mehr aber der Datensatz wird nicht angelegt.
Fehlermeldungen gibt es wahrscheinlich deshalb nicht, weil Du sie unterdrückst
Eher nicht, denn damit unterdrückt man nur PHP-Fehler, die treten meist nur als Folgefehler auf, was in dem Fall nicht der Fall sein wird. MySQL-Fehler müssen nach ihrem Auftreten - was die mysql_*-Funktionen durch ihren Rückgabewert signalisieren - mit der Funktion mysql_error() abgefragt werden.
Warum dieses Skript nicht funktioniert, ist nämlich sehr klar.
Ich hätte ja zum einen auf eine freigegebene Version verlinkt (5.1 ist immer noch nicht für den Produktiveinsatz freigegeben) andererseits auf das Kapitel Reserved Words, denn die INSERT-Syntax scheint mir soweit in Ordnung zu sein.
function user_anlegen($u_name, $u_pass, $u_mail, $firma)
{
$limit = strtotime("+7 day");
$sqlab = "insert users(UserName, UserPass, UserMail, Firma, limit)";
$sqlab .= "values ('" . $u_name . "', MD5('" . $u_pass . "'), '" . $u_mail . "', '" . $firma . "', " . $limit . ")";mysql_query($sqlab);
}Darüber hinaus solltest Du die Werte, die Du einträgst, kontextsensitiv behandeln: Stichwort "SQL Injection".
Und die Funktion sprintf() ansehen, damit kann man das Statement (meiner Meinung nach) übersichtlicher zusammenbauen.
$sqlab = sprintf("INSERT users (UserName, UserPass, UserMail, Firma, limit
) " .
"VALUES ('%s', MD5('%s'), '%s', '%s', %s)",
mysql_real_escape_string($u_name),
mysql_real_escape_string($u_pass),
mysql_real_escape_string($u_mail),
mysql_real_escape_string($firma),
$limit);
Außerdem sollte man Zeitangaben in Datenbank-eigenen Feldtypen speichern. Man kann dann auch gleich MySQL-Funktionen dafür verwenden, hier: NOW + INTERVAL 7 DAY
... "VALUES ('%s', MD5('%s'), '%s', '%s', NOW + INTERVAL 7 DAY)", ...
// und das $limit am Ende weglassen.
echo "$verabschiedung $name";