Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL und PHP Unerwartete T_Variable

STOPP

Das Einfügen in eine Datenbank direkt aus der Post ist immer eine schlechte Idee. Das ist der Grund, warum PHP derzeit mit den sehr unintuitiven magischen Anführungszeichen festhängt.

Sie sollten zumindest mysql_real_escape_string() verwenden, um Ihre Daten zu entkommen. Zum Beispiel:

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

$query = "INSERT INTO users VALUES (
    '" . mysql_real_escape_string($_POST["username"]) . "',
    '" . mysql_real_escape_string($_POST["sha_pass_hash"]) . "',
    '" . mysql_real_escape_string($_POST["email"]) . "',
    '2'
)";

mysql_query($query);

Der Grund, warum Sie dies tun müssen, ist sicherheitsbasiert. Zum Beispiel, wenn ein böswilliger Benutzer das Feld Benutzername auf '); DROP TABLE users; ohne zuerst Ihre Daten zu entkommen. Sie würden am Ende blind die folgende Abfrage ausführen:

INSERT INTO users VALUES (''); DROP TABLE users;

Was für Ihre Bewerbung natürlich nicht gut ausgehen wird.

Dies ist das Minimum sollten Sie tun.

In Wirklichkeit sollten Sie wirklich zu MySQLi Das ist eine viel modernere MySQL-Schnittstelle. Hier ist ein Beispiel

$mysqli = new mysqli('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database');

$query = "INSERT INTO users VALUES (
    '" . $mysqli->real_escape_string($_POST["username"]) . "',
    '" . $mysqli->real_escape_string($_POST["sha_pass_hash"]) . "',
    '" . $mysqli->real_escape_string($_POST["email"]) . "',
    '2'
)";

$mysqli->query($query);

Sie können MySQL sogar in einem prozeduralen Stil verwenden. Wenn also objektorientierte Programmierung noch nicht in Ihrer Reichweite ist, werden Sie mit MySQLi keine Probleme haben.

Hoffe das hilft.