php - смесь одинарных кавычек с использованием двойных кавычек
<?php
$query = "SELECT * ";
$query .= "FROM subjects ";
$query .= "WHERE id='" . $subject_id ."' ";;
$query .= "LIMIT 1";
?>
У меня проблема с этой строкой:
<?php
$query .= "WHERE id='" . $subject_id ."' ";
?>
Когда я использовал только двойные кавычки, это дало мне такую ошибку: "Запрос к базе данных не удался: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с" LIMIT 1 "в строке 1"
Так какая польза от использования одинарных кавычек внутри двойных кавычек?
2 ответа
Использование одинарных кавычек в двойных кавычках заключается в том, что вам также необходимо передать строку в MySQL. PHP и MySQL работают как с одинарными, так и с двойными кавычками в качестве разделителей строк.
Сравните две строки:
$query .= "WHERE id='" . $subject_id ."' ";
Это строка MySQL (разделители - одинарные кавычки) в строке PHP (разделители - двойные кавычки).
$query .= "WHERE id=" . $subject_id ." ";
На этот раз нет строки MySQL, только строка PHP.
Предполагающий столбец id
является числовым полем, вы бы использовали последний вариант.
Возможно, просто ошибка в вопросе, но эта строка имеет 2 точки с запятой:
$query .= "WHERE id='" . $subject_id ."' ";;
И если вы пропустите конкатенацию, это должно работать
$query .= "WHERE id='$subject_id' ";
В PHP внутри двойных кавычек одинарные кавычки являются буквальными, а переменные раскрываются.
Другой способ, которым вы написали, тоже должен работать, но это больше кода, чем нужно.