Единственная проблема с
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
Это вы пропустили несколько '
:
$query ="SELECT * from `jos_menu` where `id` = ".'\"'.$parent.'\"';
В PHP строка может быть либо:
$var = 'This is a string';
Или
$var = "This is a string";
Если вы хотите поместить "
внутри строки, которые вы уже начали с "
, вам нужно сказать PHP, что вы не хотите, чтобы ваша вторая "
до конца строки, но использовать символ "
как часть строки сам. Это то, что делает \"
. Он сообщает PHP, что Не указывайте персонажу "
любое специальное значение; так как обычно, если вы начали строку с "
, следующий "
закончил бы строку.
\
средства удалить любые «специальный» смысл следующего символа
Это работает только если персонаж после \
бы имели особое значение. Некоторые примеры:
Предположим, мы хотим напечатать Hello "World". I am a string!
:
$var = "Hello "World". I am a string!";
В этом примере мы будем иметь ошибки. Поскольку мы начали строку с "
, следующий "
закроет строку. Так что думает PHP:
"
Начало строки
Hello
часть переменной строки.
"
Эй, поскольку я видел, что строка была начата с "
, это должно означать ее конец!
World"
< - Ошибка
обработка стоп и бросать ошибки.
Однако, если мы пишем:
$var = "Hello \"World\". I am a string!";
Теперь, PHP думает:
"
Начало строки
Hello
часть строки переменной
\
Ах, хорошо, следующий характер я должен удалить любое специальное значение
"
Хорошо, это сразу после \
, поэтому я просто использую его как правило, как "
.
World
часть строки
\
Ладно, следующий символ удалит специальное значение
"
Это теперь нормально "
. I am a string!
- часть переменной строки.
"
Ах! Поскольку строка была запущена с "
, это должно быть окончание.
;
завершение заявления.
Надеюсь, это разъяснит вам все.
«* Используйте [подготовленные заявления] (http://ca2.php.net/manual/en/book.pdo.php) *", это отдаленный ответ, который стоит упомянуть здесь. – Dan