Редактировать: Вот кое-что, что предлагает улучшение, основанное на ответе Марека ниже.Пожалуйста, ознакомьтесь с комментариями относительно практики помещения переменных непосредственно в запросы и рассмотрите возможность использования подготовленных операторов.Как бы то ни было, здесь все идет.
- PHP подставляет переменные внутри строк с двойными кавычками, но не внутри строк с одинарными кавычками.
- Один символ кавычки рассматривается как обычный символстрока, разделенная другим.
Соединив это, вы можете написать:
$q = "SELECT * FROM servers WHERE name LIKE '%$value%'"; //Fine
Вы не можете написать:
$p = 'SELECT * FROM servers WHERE name LIKE "%$value%"'; //Broken!
$q
работает, потому чтоэто строка в двойных кавычках, а апострофы - просто обычные символы.$p
не работает, потому что это строка в одинарных кавычках.
Как указывает GoodFather ниже, вы также можете сказать ${value}
, чтобы избежать двусмысленности с окружающей строкой, например $r = "ABC${value}DEF";
.