Как вставить переменные в sql запрос на PHP?

Здравствуйте. Подскажите, правильно ли оформлен INSERT-запрос:

$connect->query("INSERT INTO vhosts (mainname,login,email,index,charset) VALUES ({$mainname} , {$login} , {$email}, {$index} , {$charset})");
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 2
knetesin
@knetesin
Шпион
VALUES ({$mainname} , {$login} , {$email}, {$index} , {$charset}

дословно засылая строки т.е - VALUES (string , string , string, string , string)
вы получаете ошибку т.к строки надо обрамлять в кавычки т.е хотя бы так:
$connect->query("INSERT INTO vhosts (mainname,login,email,index,charset) VALUES ('{$mainname}', '{$login}', '{$email}', '{$index}' , '{$charset}')");

(допустим index - строка, в коде у вас наверняка нет явной типизации, если вдруг есть то можно {$index} не обрамлять)

не говоря уже о потенциальных sql инъекциях :)
Ответ написан
Комментировать
@krypt3r
Что за двоечники тут отвечают?
Для ТС. Вам нужно изучить PDO и prepared statements. Тогда у вас в коде будет нечто такое:
$pdo->prepare("INSERT INTO vhosts (mainname,login,email,index,charset) VALUES (:mainname , :login , :email, :index , :charset)");
$pdo->execute([':mainname' => $mainname , ':login' => $login , ':email' => $email, ':index' => $index , ':charset' => $charset]);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы