sql >> Databasteknik >  >> RDS >> Mysql

MySQL och PHP Unexpected T_Variable

STOPPA

Att infoga i en databas direkt från posten är alltid en dålig idé. Detta är anledningen till att PHP för närvarande har fastnat i de mycket ointuitiva magiska citaten.

Du bör åtminstone använda mysql_real_escape_string() för att undkomma din data. Till exempel:

$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);

Anledningen till att du måste göra detta är säkerhetsbaserad. Till exempel om någon skadlig person ställer in användarnamnsfältet till '); DROP TABLE users; utan att först fly dina data. Du skulle sluta blint köra följande fråga:

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

Vilket naturligtvis inte kommer att sluta bra för din ansökan.

Detta är minsta du borde göra.

I verkligheten borde du verkligen gå över till MySQLi Vilket är ett mycket modernare MySQL-gränssnitt. Här är ett exempel

$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 till och med använda MySQL i en procedurstil. Så om objektorienterad programmering inte är inom din räckvidd ännu kommer du inte att ha några problem med MySQLi.

Hoppas det hjälper.



  1. Hur kan jag kontrollera antalet aktiva sqlalchemy-anslutningar i en pool vid en given tidpunkt?

  2. Hur väljer man första och sista dataraden från ett mysql-resultat?

  3. SQL-sats för avstämning

  4. MySQL NOW() funktion med hög precision