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

Всяко едно извикване към mysql_real_escape_string изисква ли още едно пътуване до базата данни?

Фактът, че използва библиотеката mysql не означава, че прави двупосочно пътуване със сървъра.

Той изпълнява код от клиентската библиотека на mysql, зареден в същия процес като вашия php интерпретатор. Все пак имате нужда от връзка - тази функция трябва да знае някои настройки на сървъра, за да работи правилно. Но тези настройки се кешират в информацията за връзката от страната на PHP.

Ако искате да потвърдите това (и сте на linux), напишете прост скрипт като:

<?php
$link = mysql_connect('localhost', 'user', 'pass');
echo "Connection done\n";
echo mysql_real_escape_string("this ' is a test");
?>

И го стартирайте през strace :

$ strace php t.php
....            # here comes the connection to mysql, socket fd == 3
connect(3, {sa_family=AF_FILE, path="/var/run/mysqld/mysqld.sock"}, 110) = 0
fcntl(3, F_SETFL, O_RDWR)               = 0
setsockopt(3, SOL_SOCKET, SO_RCVTIMEO, "\2003\341\1\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
....            # talking with mysql here
poll([{fd=3, events=POLLIN}], 1, 60000) = 1 ([{fd=3, revents=POLLIN}])
read(3, "8\0\0\0\n5.1.58-log\0\3\0\0\0K-?4'fL+\0\377\367!"..., 16384) = 60
...
read(3, "\7\0\0\2\0\0\0\2\0\0\0", 16384) = 11
                # first php echo
write(1, "Connection done\n", 16Connection done    )       = 16
                # second php echo
write(1, "this \\' is a test", 17this \' is a test)      = 17
munmap(0x7f62e187a000, 528384)          = 0
....

Единственото важно нещо там е двете write причинени от echo операторите нямат друго системно повикване между тях - никаква мрежова комуникация не е възможна без системно извикване (все пак от потребителското пространство в Linux).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка при неправилна стойност на низа в MySQL при запазване на Unicode низ в Django

  2. Тестване за уязвимости в сигурността в уеб приложения:Най-добри практики?

  3. Грешка при несинхронизирани команди на PHP

  4. Как да използвам автоматично увеличен първичен ключ и като външен ключ?

  5. Преименувайте колона в MySQL