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

PHP MySQL как правилно да съхранявате / избягвате низ

Уверете се, че сте задали double_encode на false , в противен случай вече кодираните низове ще бъдат кодирани отново, обръщайки & в & . След това, когато отидете да го покажете след използване на html_entity_decode , ще изглежда така, сякаш все още е кодиран.

Нежелан резултат:http://ideone.com/uQxuAM

Използване на htmlentities($string, ENT_QUOTES, 'UTF-8', false); ще гарантира, че това няма да се случи.

След това използвайте html_entity_decode($string, ENT_QUOTES, 'UTF-8'); за показване на стойността.

Демо:http://ideone.com/8Jo7YA

MySQL обаче е напълно способен да съхранява декодираните стойности в базата данни.

Никога не искате да имате низове, кодирани с htmlentities, съхранявани във вашата база данни. Какво се случва, когато искате да генерирате CSV или PDF, да изпратите имейл или нещо друго, което не е HTML?

Освен факта, че трябва да извършите двойно програмиране на кодиране на данните, увеличаване на количеството данни в базата данни, след което все още трябва да декодирате изхода, има тонове статии онлайн, които отговарят защо не трябва.

Така че трябва да кодирате само стойностите за показване на получените изходни данни в html.

Вместо това трябва да избегнете входа, като използвате mysqli_real_escape_string

$string = '<a href="/path/to/file?a=b&foo=bar#baz">My Link</a>';
$sql = "INSERT INTO links (link)"
     . "VALUES(" . mysqli_real_escape_string($string) . "')";

или още по-добре използвайте подготвени отчети

$stmt = $mysqli->prepare("INSERT INTO links (link) VALUES(?)");
$stmt->bind_param("s", $string);
$stmt->execute();

След това да форматирате изхода като съобщение за успех, за да покажете какво всъщност е добавено към базата данни.

$html = "<div>Added Link: " . htmlentities($string, ENT_QUOTES, 'UTF-8', false) . "</div>";

Сега няма нужда да използвате html_entity_decode за изобразяване на html в браузъра.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. извличане и отпечатване на стойности след разделител запетая от едно поле с помощта на присъединяване (codeigniter)

  2. ЗАРЕЖДАНЕ НА ДАННИ INFILE на отдалечена машина

  3. Използваният тип таблица не поддържа SPATIAL индекси

  4. Има ли общо решение за изразяване на извлечен списък с колони в Oracle (и MySQL)?

  5. MySQL Query - Сумирайте капацитета на множество складове