Почему мы должны включать кавычку при вставке строковой переменной в базу данных mysql php

$string = 'Loreum'; $insert = "INSERT INTO table (field1, field2 ) VALUES ($string , 7)"; $conn -> query($insert) 

Это приведет к ошибке:

 Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'ashfjksaf' in 'field list'' in C:\xampp\htdocs\yipee.php:23 Stack trace: #0 C:\xampp\htdocs\yipee.php(23): PDO->query('INSERT INTO yea...') #1 {main} thrown in C:\xampp\htdocs\yipee.php on line 23 

Однако, когда я перехожу на

 $insert = "INSERT INTO table (field1, field2 ) VALUES ('$string' , 7)"; 

Он работает так, как ожидалось. Интересно, почему мы должны включать одинарный кавычек в строковой переменной. Я думал, что нам нужно включить метку кавычек в литерал.

Вот как работает синтаксис MySQL. PHP просто строит запрос для вас.

PHP заменит строку $ Loreum

поэтому запрос MySQL будет выглядеть так

 INSERT INTO table (field1, field2 ) VALUES (Loreum , 7) 

который является недопустимым синтаксисом.

Поэтому необходимо добавить кавычки.

вся строка mysql должна быть в одной кавычки

как

  insert into table_name (name,email)values('alok','alok@gmail.com');