Многие продукты (PHP, MySQL и т. Д.) Используют обратную косую черту в качестве escape-символа.
Само по себе обычно потребляется, если что-то сделать с персонажем после него. Например, a\tb
дает вам буквы a
и b
, разделенные табуляцией ( обычная интерпретация \t
).
Удвоение обратной косой черты \\xyz
обычно интерпретируется следующим образом: первая обратная косая черта выходит за пределы второй, поэтому вы получаете \xyz
.
Если ваша строка проходит через несколько уровней кода (например, PDO плюс MySQL), вам может понадобится вдвое больше обратной косой черты, поскольку каждый слой превратит \\
в \
.
Другой диагностический инструмент - SELECT HEX(col) ...
, чтобы увидеть, что было сохранено в базе данных. Примеры:
610962 a\tb -- a=61, tab=09, b=62
615C7462 a\\tb -- a=61, \=5C, t=74, b=62
Вернуться к вашему коду:
$params = array(':name' => "My Shop No. \6\");
\6 is probably treated as just "6" (not everything has some escaped meaning)
\" possibly caused a syntax error. Normally this is now to get a " inside a string
'My Shop No. \\6\\'
Теперь пары обратных слешей превращаются в одиночные обратные слэши, а затем строка передается тому, кто следующий.
(В эти контексты, одинарные и двойные кавычки работают одинаково.)