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

PHP:Вмъкване на стойности от формуляра в MySQL

Следният код просто декларира низова променлива, която съдържа MySQL заявка:

$sql = "INSERT INTO users (username, password, email)
    VALUES ('".$_POST["username"]."','".$_POST["password"]."','".$_POST["email"]."')";

Не изпълнява заявката. За да направите това, трябва да използвате някои функции, но нека първо обясня нещо друго.

НИКОГА НЕ СЕ ДОВЕРЯВАЙТЕ НА ВЪВЕДЕНАТА ПОТРЕБИТЕЛ :Никога не трябва да добавяте потребителско въвеждане (като въвеждане на формуляр от $_GET или $_POST )директно към вашето запитване. Някой може внимателно да манипулира входа по такъв начин, че да причини големи щети на вашата база данни. Това се нарича SQL инжектиране. Можете да прочетете повече за него тук

За да защитите скрипта си от такава атака, вие трябва използвайте Подготвени отчети. Повече за подготвените отчети тук

Включете подготвени изрази към вашия код по следния начин:

$sql = "INSERT INTO users (username, password, email)
    VALUES (?,?,?)";

Забележете как ? се използват като контейнери за стойностите. След това трябва да подготвите израза с помощта на mysqli_prepare :

$stmt = $mysqli->prepare($sql);

След това започнете да обвързвате входните променливи към подготвения оператор:

$stmt->bind_param("sss", $_POST['username'], $_POST['email'], $_POST['password']);

И накрая изпълнете подготвените отчети. (Тук се извършва действителното вмъкване)

$stmt->execute();

ЗАБЕЛЕЖКА Въпреки че не е част от въпроса, горещо ви съветвам никога да не съхранявате паролите в чист текст. Вместо това трябва да използвате password_hash за съхраняване на хеш на паролата



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извлека общата сума на колоната, когато редовете са странирани?

  2. Какво се случва при промяна на типа колона TIMESTAMP на DATETIME в MySQL?

  3. gcc няма да компилира и стартира MySQL C библиотеки

  4. Какво е значението на <> в mysql заявката?

  5. Как да премахнете две дублиращи се колони