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 . के कारण होता है बयानों के बीच में कोई अन्य सिस्कल नहीं है - सिस्कल के बिना कोई नेटवर्क संचार संभव नहीं है (वैसे भी लिनक्स में यूज़रस्पेस से)।




  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 डंप का उपयोग करते हुए बैकअप mysql डेटाबेस के दौरान 0KB आकार की फ़ाइल प्राप्त करना

  2. दूरस्थ MySQL होस्ट से कनेक्ट करने का प्रयास कर रहा है (त्रुटि 2003)

  3. mysql_fetch_array का PDO::FETCH_NUM . में अनुवाद करें

  4. DELETE स्टेटमेंट पर MySQL LIMIT

  5. बड़ी मात्रा में डेटा (लॉगिंग) के लिए क्या MySQL इंजन?