http___blog.petkanski.com_2011_04_mysqlrealescapestring.html_1.xml
https___jamesmerse.com_call-to-undefined-function-mysql-real-escape-string_.xml
1.1 2.1 2.2 2.3 3.1 4.1 4.2 5.1 5.2 5.3 6.1 7.1 8.1 9.1 9.2 10.1 11.1 12.1 12.2
По темата.. Днес ми се наложи да сравнявам предимства и недостатъци на няколко framework-чета. При едното от тях липсваше вграден database model, така че се наложи да ползвам нещо отделно. В конкретният случай се спрях на PDO и реших да си напиша няколко базови класчета.. За да съкратя историята, направо ще ви синтезирам това което Ви е нужно да знаете ;) При МySQL имате два вида сравнение на низ от символи (string) - това са равенство и сравнение с pattern, посредством LIKE или регулярен израз. В моят случай използвам LIKE, защото е най-бърз за имплементация и защото отговаря на нуждите ми и няма смисъл от overengineering. Случаят е простичък - имам данни в базата, имам и търсачка която търси с LIKE. Това което ме изненада, беше, че mysql_real_escape_string() допусна символи в низа които са със специално значение, а именно - символите за процент (%) и долно тире (_). В най-общият случай - при вмъкване на данни или сравнение със равенство това не ви бърка, но когато ползвате LIKE нещата стоят по малко по-различен начин. Получи се ситуация, при която аз търся в базата данни къде е споменато "100%", но тъй като символът за процент не се escape-ва, се получава, че търся низ който съдържа 100. SELECT * FROM SomeTable WHERE `textField` LIKE '%100%%' Очевидно, това не е поведението което би се очаквало, след като имаш илюзията, че данните са ти escape-нати правилно. След като разбрах какъв е проблема си помислих, че може би е проблем на mysql_real_escape_string() и веднага си отворих http://www.php.net/mysql_real_escape_string - но се оказа, че това е очаквано поведение. В документацията на функцията ясно са писали, че тя "prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a". Ето го точният цитат от сайта: Може би символите за wildcard попадат точно в тези изключения които са споменали.mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a.This function must always (with few exceptions) be used to make data safe before sending a query to MySQL. Изводът е простичък - винаги минавайте един профилактичен str_ireplace() или preg_replace() на данните които използвате при генериране на заявка за търсене в базата данни за да няма изненади. Нека това, че ползвате prepared statements не ви дава чувство за сигурност.
1.1 1.2 1.3 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 11.2 12.1 13.1 14.1 15.1 16.1 16.2 16.3 17.1 17.2 17.3 18.1 19.1 20.1 21.1 22.1 22.2 23.1 24.1 25.1 26.1
Username: Password: currently my process.php but is do the very same error.. I i do not know seem to find the problem. Please assist Here is the code This is what it keeps showing Fatal error: Uncaught Error: call to undefined function mysql_real_escape_string() Please help I recommend to use mysqli (replace mysql through mysqli in your code) and to connect to your database with a variable. You are watching: Call to undefined function mysql_real_escape_string() Like this: $db = mysqli_connect("localhost", "username", "", "database");Then you need to put $db in your mysqli_query as a parameter. Here is one example: $result = mysqli_query($db, "select * from login wherein username="$username" and password="$password""); Try below... It will work. As someone mention in above you must replace every the mysql with mysqli in your code. Please express this attach MySQL vs MySQLi when using PHP And likewise remove "mysql_real_escape_string" code also. Thank you. Thanks for contributing an answer to ridge Overflow! Please be certain to answer the question. Administer details and also share your research! But avoid … Asking for help, clarification, or responding to various other answers. Making statements based on opinion; earlier them up with references or personal experience. See more: Working At Smooth Sailing Realty And Property Management, Inc To find out more, watch our tips on writing an excellent answers. article Your answer Discard By clicking “Post your Answer”, you agree come our regards to service, privacy policy and cookie plan Not the prize you're spring for? Browse various other questions tagged html mysql phpmyadmin or questioning your own question. site architecture / logo © 2021 ridge Exchange Inc; user contributions license is granted under cc by-sa. Stack Overflow works best with JavaScript allowed her privacy By clicking “Accept every cookies”, friend agree ridge Exchange deserve to store cookie on your device and disclose info in accordance v our Cookie Policy.