@maks78945

Можно ли формировать sql запрос таким образом?

Есть форма, id и name полей идентичные как и в БД. С помощью js проверить заполненность полей, если всё верно, вызывать функцию в которую передавать массив "id" => 'value', на php получаем этот массив, перебираем массив и записываем в строку ($str) значения "id = 'value'" и подставить эту строку в запрос:
$query = "UPDATE product SET".$str."WHERE id=12";
  • Вопрос задан
  • 111 просмотров
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
В целом подход правильный, но главное здесь не пропустить SQL инъекцию.

В пхп скрипте надо один раз надо записать в массив все имена полей.
Потом пробегать по этому массиву и смотреть, заполнено ли соответствующее поле в массиве, пришедшем с клиента. Если заполнено - добавляем в запрос поле с плейсхолдером, а значение - в массив значений.
Последним пунктом добавляем в массив значений id
потом подготавливаем запрос и исполняем его
Пример кода можно посмотреть здесь
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) id = 'value' это наверное `fieldname` = 'value'?
2)
на php получаем этот массив, перебираем массив и записываем в строку ($str) значения "id = 'value'"
можно заменить на implode(',', $array);, но это все равно плохо, см. пункт 3.
3) Вставлять переменные проверенные яваскриптом на фронтенде в запрос - ОЧЕНЬ плохая идея, данные во первых надо проверять на стороне сервера, а во вторых использовать подготовленные запросы, иначе в один прекрасный день все ваши данные превратятся в тыкву.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы