Я пытаюсь вставить переменные из формы в базу данных mySQL, используя подготовленный mysqli оператор. Проблема, с которой я столкнулся, заключается в том, что одна из моих переменных не требуется, и поэтому, когда я не ввожу ничего для нее в форму, я получаю сообщение об ошибке. Как правильно обработать эту переменную? Мне нужно будет использовать другое подготовленное заявление или я могу сохранить тот, который у меня есть?Работа с необязательными формами в mysqli
ответ
Сформировать ваши подготовленные заявления динамически. Если поле отсутствует, не включайте его. Например, предположим, что у вашей формы есть поля name
, age
и email
, а заказчик отправляет name='Bo'
, age=27
, но не имеет электронной почты. Вы могли бы сделать
$columns=['name','email','age'];//all possible columns
$p = &$_POST; //form data, eg: ['name'=>'Bo','age'=>27] email missing
$data=[];//data that will be inserted
foreach($columns as $col){
//add available data to $data
if(isset($p[$col])) $data[$col]=$p[$col];
}
$insertCols = '('. implode(',',array_keys($data)) .')';//result: "(name,age)"
$insertVals = '('.trim(str_repeat('?,',count($data)),',').')';//result:"(?,?)"
$sql = "INSERT INTO myTable $insertCols VALUES $insertVals";
Теперь вы можете использовать $sql
сделать подготовленное заявление, и принимают значения параметров из $data
из-за наличия 2-х частей формы на двух разных страницах некоторые из моих значений сохраняются в переменной $ _SESSION. Должен ли я перемещать все в массив $ _SESSION или добавлять к сообщению, и если сообщение, как я это сделаю? Будет ли это просто скрытое поле в форме? –
@JoshuaGertner Я просто показал простое приложение. Вам нужно будет адаптировать его к вашим потребностям. Например, вы можете добавить vars из других источников непосредственно в '$ data', добавив еще одно условие внутри цикла:' if (isset ($ _ SESSION [$ col])) $ data [$ col] = $ _SESSION [$ col]) ' – BeetleJuice
спасибо за помощь. –
С ответом Эндрю он прав. Чтобы разработать
При отправке формы вы можете проверить, действительно ли они существуют или являются ли они пустыми, при проверке вы можете присвоить им разные значения, чтобы не испортить ваш SQL.
Если у вас есть проверки HTML5, такие как обязательные, вы можете удалить их, но все же сделайте первый шаг в проверке, действительно ли переменная имеет значение.
- 1. Работа с несколькими формами
- 2. Работа с формами
- 3. Работа с формами в mvc3
- 4. Работа с формами в магазине
- 5. Работа с несколькими формами C++
- 6. VB.NET - Работа с несколькими формами
- 7. Работа Jquery с несколькими формами
- 8. Работа с необязательными параметрами хранимой процедуры
- 9. Работа с формами в Drupal 7
- 10. Работа с формами форм в Django
- 11. Работа с несколькими формами в MVC4
- 12. Работа с формами в drupal 8
- 13. Работа с html-формами в Ionic
- 14. Работа с несколькими формами в Django
- 15. yii2 учебник «Работа с формами» - добавление поля
- 16. Работа с tabindex и несколькими формами
- 17. Работа с переданными данными между формами
- 18. Real World MVC - Работа с формами
- 19. Работа с несколькими формами и их значениями
- 20. Работа с формами HTML и php
- 21. Django CBV - работа с необязательными параметрами в URL-адресах
- 22. Работа с несколькими необязательными параметрами с помощью mod_rewrite
- 23. Работа с несколькими формами с использованием C# в Visual Studio
- 24. Scala: Работа с необязательными элементами XML и классами приложений
- 25. Изучение Haskell Parsec и работа с необязательными анализаторами
- 26. Работа с несколькими формами на одной странице в Django
- 27. Работа с формами и ajax в drupal 6
- 28. Работа с PDF-формами и PDFTK и PHP
- 29. ASP.NET MVC View (Razor) Работа с формами Проверка значений
- 30. Работа с несколькими формами ajax на одной странице
разместить свой код и сообщение об ошибке. –
Вы можете сохранить тот, который у вас есть, проверить, есть ли что-либо в указанных полях и оставить эти поля вне запроса (если у вас есть значение по умолчанию в таблице для этих полей) или назначить какое-то значение по умолчанию в запросе если эти поля пусты. – Andrew
fyi, 'null' - это отличное значение для использования в качестве значения заполнителя в подготовленных запросах. PHP имеет ключевое слово 'null'. Он делает то, что вы ожидаете в переменных привязки в подготовленных запросах. т. е. не изменять запрос - просто используйте «null» в полях, которые пусты и не требуются. –