STOP
Det er altid en dårlig idé at indsætte i en database direkte fra post. Dette er grunden til, at PHP i øjeblikket sidder fast med de meget uintuitive magiske citater.
Du bør i det mindste bruge mysql_real_escape_string() for at undslippe dine data. For eksempel:
$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);
Grunden til at du skal gøre dette er sikkerhedsbaseret. For eksempel hvis nogle ondsindede sætter feltet brugernavn til '); DROP TABLE users;
uden først at undslippe dine data. Du ville ende blindt med at køre følgende forespørgsel:
INSERT INTO users VALUES (''); DROP TABLE users;
Hvilket selvfølgelig ikke ender godt for din ansøgning.
Dette er minimum du burde gøre.
I virkeligheden burde du virkelig gå over til MySQLi Hvilket er en meget mere moderne MySQL-grænseflade. Her er et eksempel
$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);
Du kan endda bruge MySQL i en proceduremæssig stil. Så hvis objektorienteret programmering endnu ikke er inden for din rækkevidde, har du ingen problemer med MySQLi.
Håber det hjælper.