Добавление данных в таблицу SQL через PHP

138
21 ноября 2019, 05:20

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

$sql = "INSERT INTO Data (Name, Description,Photo,Buy,Sell) VALUES ('"$_POST['name']"','"$_POST['description']"','"$_POST['photo']"','"$_POST['buy']"','"$_POST['sell']"'"));
Answer 1

Запросы в базу данных следует выполнять с помощью подготовленных выражений. Для этого лучше всего использовать класс PDO.

Выполнение запросов на вставку с помощью подготовленных выражений происходит в 2 стадии:

  • подготовка запроса, при этом на место всех переменных ставятся знаки вопроса. При этом создается переменная $stmt.
  • выполнение запроса, при котором все участвующие в запросе переменные отправляются отдельно, в виде массива, в метод $stmt->execute().

в итоге код получается аккуратным и безопасным:

$sql = "INSERT INTO Data (Name, Description,Photo,Buy,Sell) VALUES (?,?,?,?,?)";
$stmt = $pdo->prepare($sql);
$stmt->execute([$_POST['name'], $_POST['description'], $_POST['photo'], $_POST['buy'],$_POST['sell']]);

Также можно посмотреть другие примеры запросов с использованием подготовленных выражений

Хочу отметить, что данный подход гарантирует нас от ошибок синтаксиса. Однако при выполнении запроса могут возникать и другие ошибки. Это совершенно нормальная ситуация, и в случае возникновения ошибки надо просто прочитать её текст ,понять в чем она заключается, и исправить.

Чтобы ПДО всегда сообщал об ошибких, надо писать код соединения так, как написано в этом ответе

Answer 2

Так правильней:

$sql = "INSERT INTO Data (Name, Description,Photo,Buy,Sell) VALUES ('$_POST[name]','$_POST[description]','$_POST[photo]','$_POST[buy]','$_POST[sell])";
READ ALSO
В Moodle 3 ошибка: Invalid state passed to moodle_page::set_state. We are in state 3 and state 3 was requested

В Moodle 3 ошибка: Invalid state passed to moodle_page::set_state. We are in state 3 and state 3 was requested

Перенесли Moodle на сервер с Centos 7На странице /mod/scorm/player

140
Как добавить виртуальный аргумент graphQl?

Как добавить виртуальный аргумент graphQl?

Мне нужно добавить виртуальный аргумент с типом данных boolean

111
Ошибка при запуске CRON

Ошибка при запуске CRON

При запуске cron выдает ошибку:

117
Обнуление полей ввода

Обнуление полей ввода

Есть форма для изменения пароля, при нажатии на submit поля ввода становятся пустыми, соответственно валидатор Laravel ругается на их пустоту, помогите...

129