sql >> Databáze >  >> RDS >> Mysql

MySQL a PHP Neočekávaná T_Variable

STOP

Vkládání do databáze přímo z příspěvku je vždy špatný nápad. To je důvod, proč PHP v současné době uvízlo u velmi neintuitivních magických uvozovek.

K úniku dat byste měli přinejmenším používat mysql_real_escape_string(). Například:

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

Důvodem, proč to musíte udělat, je zabezpečení. Pokud například nějaký škodlivý kód nastaví pole uživatelského jména na '); DROP TABLE users; aniž byste předtím unikli ze svých dat. Nakonec byste slepě spustili následující dotaz:

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

Což pro vaši aplikaci samozřejmě neskončí dobře.

Toto je minimum měli byste to udělat.

Ve skutečnosti byste měli skutečně přejít na MySQLi Což je mnohem modernější rozhraní MySQL. Zde je příklad

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

Můžete dokonce používat MySQL v procedurálním stylu. Takže pokud objektově orientované programování ještě nemáte na dosah, nebudete mít s MySQLi žádné problémy.

Doufám, že to pomůže.



  1. Jak používat fyzické umístění řádků (ROWID) v příkazu DELETE

  2. Připojte se k nám a získejte úvod do přístupu k SQL Serveru

  3. Zobrazit aktuální data uživatele a jeho jméno ve vybraném tagu

  4. Jak provést místní proceduru pomocí spustit immedate?