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

Не мога да използвам mysql_real_escape_string

Първа точка:Ако получавате грешка от mysql_real_escape_string() , това е, защото извиквате функцията, преди да сте свързани с базата данни.

Изглежда, че се свързвате с базата данни точно преди да изпълните заявка. Така че всичко, което направите, преди да извикате своя mm_mysqlquery() функцията няма да има връзка.

mysql_real_escape_string() функцията се нуждае от жива връзка с базата данни, така че може да направи правилния вид екраниране по отношение на набора от знаци на връзката. Така че трябва да се свържете преди ти избягаш.

По-добре е да направите това така или иначе, защото ако направите няколко заявки по време на една заявка на PHP, е по-малко излишно да се свържете веднъж и използвайте една и съща връзка за всичките си заявки.

Второ, моля, не приемайте предложения за използване на addslashes() -- не прави същото като mysql_real_escape_string() . Двете не са взаимозаменяеми. Трябва да придобиете навика да използвате mysql_real_escape_string() .

Трето, вашият sani() функция показва често срещано погрешно схващане.

function sani($string){     
  $string = strip_tags($string); 
  $string = htmlspecialchars($string); 
  $string = trim(rtrim(ltrim($string))); 
  $string = mysql_real_escape_string($string);
  return $string;
}

Често срещаното погрешно схващане е, че имате нужда от всички тези функции, за да направите низ безопасен в SQL израз. Вие не го правите. Само mysql_real_escape_string() необходимо е. Всички други функции в този пример не правят нищо за защита срещу SQL инжекция.

Тези функции са полезни, ако извеждате низ в HTML презентация и искате да намалите риска от XSS атаки, но след това mysql_real_escape_string() е без значение.

Използвайте всеки тип дезинфекциращ метод в съответния контекст.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на ALTER за пускане на колона, ако тя съществува в MySQL

  2. MySQL множествена логика WHERE И/OR

  3. Не можа да се зареди JDBC клас драйвери [com.mysql.jdbc.Driver]

  4. Вмъкване/актуализиране на произволна дата в MySQL

  5. Невалиден формат за дата и час:1292 Неправилна стойност за дата и час