Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL и PHP Неочаквана T_Variable

СПРИ

Вмъкването в база данни директно от публикацията винаги е лоша идея. Това е причината PHP в момента да е заседнал с много неинтуитивните магически кавички.

Най-малкото трябва да използвате mysql_real_escape_string(), за да избегнете вашите данни. Например:

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

Причината да направите това е базирана на сигурността. Например, ако някой злонамерен зададе полето за потребителско име на '); DROP TABLE users; без първо да избягвате вашите данни. В крайна сметка ще изпълните сляпо следната заявка:

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

Което, разбира се, няма да свърши добре за вашето приложение.

Това еминимума трябва да правите.

В действителност наистина трябва да преминете към MySQLi Което е много по-модерен MySQL интерфейс. Ето един пример

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

Можете дори да използвате MySQL в процедурен стил. Така че, ако обектно-ориентираното програмиране все още не е в обсега ви, няма да имате проблеми с MySQLi.

Надявам се, че това помага.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. стартиране на php, apache?

  2. Изберете само някои колони от таблица на LEFT JOIN

  3. Използване на Mysqli bind_param с колони за дата и час?

  4. Как да дефинирате цяло число без знак в SQLAlchemy

  5. Таймерът за отмяна на изявление на MySQL не успя да спре