За да коригирате грешката, която получавате, mysql_real_escape_string()
изисква отворена връзка чрез mysql_connect()
. Тъй като нямате такъв, той се опитва да се свърже и не успява (използвайки потребителско име от matthew
, докато вашето PDO се свързва с root
). Освен това не можете (или не трябва ) смесете и съчетайте mysql_real_escape_string()
и PDO
- това са различни библиотеки.
По отношение на „кога“ да се използват подготвени изрази, общото правило е, когато стойностите не са твърдо кодирани. Вашият пример за LIKE '%hotmail%'
не е необходимо да се подготвя, той е твърдо кодиран и никога няма да се промени (освен ако не го актуализирате ръчно, разбира се).
Ако имате заявка, която ще приеме променлива от всякакъв вид, било то данни от $_POST
или $_GET
, или променлива, която програмист е направил 10 реда преди заявката, трябва да използвате подготвен израз (или поне да го избегнете, вижте PDO::quote
).