sql >> Database teknologi >  >> RDS >> Mysql

MySQL og PHP Uventet T_Variable

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.



  1. hvordan man bruger en streng som formel for matematiske beregninger i php?

  2. Betinget VED DUPLIKAT NØGLEOPDATERING (Opdater kun, hvis en bestemt betingelse er sand)

  3. PL/SQL-udvikler hvordan får man den række, der fik indsættelsen til at mislykkes?

  4. Hent sidst indsatte id med Mysql