Ich habe Probleme mit der Verwendung eines alten MySQL-Befehls von einer Website.Warum funktioniert dieser MySQL-Befehl nicht?
INSERT INTO
users(user_name, user_pass, user_email ,user_date, user_level)
VALUES('" . mysql_real_escape_string($_POST['user_name']) . "',
'" . sha1($_POST['user_pass']) . "',
'" . mysql_real_escape_string($_POST['user_email']) . "',
NOW(),
0);
Es wird mit diesem Fehler zurückgegeben.
#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 'user_name']) . "',
'" . sha1($_POST['user_pass']) . "',
'" . mys' at line 3
Der Artikel auf der Website war von Mai 2010, also könnte ein Grund sein, warum es nicht funktioniert. Hier ist die Website: http://code.tutsplus.com/tutorials/how-to-create-a-phpmysql-powered-forum-from-scratch--net-10188. Wenn Sie weitere Informationen benötigen, werde ich diese Frage bearbeiten.
Es gibt nichts falsch mit dem SQL aus diesem Tutorial. Vielleicht sollten Sie den eigentlichen Code genau so posten, wie Sie ihn haben. Das Tutorial erstellt eine Variable in PHP - wenn Sie es genauso geschrieben hätten wie der Autor, würde Ihre db niemals die Variablen '$ _POST' sehen - stattdessen würden die Werte von diesen in der Abfrage verkettet werden. – billynoah
** WARNUNG **: Es ist nicht einfach, eine eigene Zugriffssteuerungsschicht zu erstellen, und es gibt viele Möglichkeiten, dies völlig falsch zu machen. Bitte schreiben Sie nicht Ihr eigenes Authentifizierungssystem, wenn Sie ein modernes [Entwicklungsframework] (http://codegeekz.com/best-php-frameworks-for-developers/) wie [Laravel] (http://laravel.com/) verfügt über ein robustes [Authentifizierungssystem] (https://laravel.com/docs/5.2/authentication). Am absolutesten folgen Sie [empfohlenen Best Practices für die Sicherheit] (http://www.phptherightway.com/#security) und speichern Sie niemals Passwörter mit nur SHA1 angewendet. – tadman
** WARNUNG **: Wenn Sie nur PHP lernen, lernen Sie nicht die obsolete ['mysql_query'] (http://php.net/manual/en/function.mysql-query.php) Schnittstelle. Es ist schrecklich und wurde in PHP 7 entfernt. Ein Ersatz wie [PDO ist nicht schwer zu erlernen] (http://net.tutsplus.com/tutorials/php/why-you-should-beusing-phps-pdo- for-database-access /) und ein Leitfaden wie [PHP The Right Way] (http://www.phptherightway.com/) hilft Best Practices zu erklären. Wenn Sie keine vorbereiteten Anweisungen verwenden, sind Sie nur einen Fehler entfernt von einem riesigen SQL-Injektionsloch. – tadman