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 внутри двойных кавычек одинарные кавычки являются буквальными, а переменные раскрываются.

Другой способ, которым вы написали, тоже должен работать, но это больше кода, чем нужно.

Другие вопросы по тегам