Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-28 / 0 / 0
Регистрация: 26.03.2025
Сообщений: 163

Записать значение NULL, если стрчка пустая или не соответствует типу поля

16.11.2025, 05:52. Показов 419. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Code
1
2
3
4
Имя: click   
Тип: int
null: Да  
По умолчанию: NULL
При выполнении запроса, возможно записать NULL по умолчанию.
- Если переменная не существует
- Либо явно указать при записи значение null

Как сделать:

JavaScript
1
navigator.sendBeacon(document.URL, JSON.stringify({news:{22, false}}))
PHP
1
[$id, $insert] = $_JSON['news']
Из js передаю false, в php, переменная $insert пустая или вроде даже пустую строчку содержит.

По идеи через sql, при попытке записать $insert в тип поля int, должно принять значение по умолчанию. То есть NULL, этого не происходит.

А явно, записывать null, делать лишние проверки в php перед в sql NULL.
Это как то не правильно, полей много, не станешь писать проверки и перезаписывать значение на NULL и тд

Возможно ли данную задачу сделать, более универсальной что ли...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2025, 05:52
Ответы с готовыми решениями:

Вывод языковой стрчки пользователю по geoip
geoip уже подключен к сайту, подскажите пожалуйста код, который бы выводил строчку под 4 страны:...

Строку "NULL" к типу NULL
Как строку "NULL" привести к типа NULL? $var = "NULL"; // Надо привести к типа NULL if ($var...

В БД записывается не NULL, а пустая строка
у меня есть вот такая вот проверочка <? if(isset($article)) { echo '<div style="float:right;...

5
Эксперт PHP
 Аватар для liris
4349 / 994 / 148
Регистрация: 16.01.2023
Сообщений: 2,448
16.11.2025, 10:41
Цитата Сообщение от Fixmon Посмотреть сообщение
По идеи через sql, при попытке записать $insert в тип поля int, должно принять значение по умолчанию. То есть NULL, этого не происходит.
Когда создаете поле в таблице БД, у него можно поставить значение по умолчанию. Если в запросе поле будет отсутствовать, то туда будет записан NULL.

Проверьте свой INSERT-запрос. Убедитесь, что в нем не передается никакое другое значение.
0
1298 / 992 / 230
Регистрация: 01.10.2018
Сообщений: 3,860
16.11.2025, 22:00
Fixmon, не показали, что находится между JSON- на входе и $_JSON. json_decode?

На PHP можно передавать логические значения в запрос, как числа. Для этого даже явно преобразовывать в числовой тип необязательно.

Кроме того, MySQL понимает литералы true и false (трактует их, как целочисленные 1 и 0 для числового поля). Но это обычно уже лишнее усложнение. Для хранения логических значений используются отдельные биты, или tinyint unsigned, или char(0). В последнем случае одно логическое значение представляется пустой строкой, другое - NULL-ом.

Добавлено через 1 минуту
Если PHP где-то преобразовывает false в пустую строку, тогда делайте явно (int) или intval().

Цитата Сообщение от Fixmon Посмотреть сообщение
Это как то не правильно, полей много, не станешь писать проверки и перезаписывать значение на NULL и тд
Входные данные нужно тщательно проверять. Иначе вашу систему быстро сломают. Или не быстро, но зато в самый неподходящий момент.
0
Эксперт PHP
 Аватар для liris
4349 / 994 / 148
Регистрация: 16.01.2023
Сообщений: 2,448
17.11.2025, 09:33
Цитата Сообщение от Fixmon Посмотреть сообщение
Это как то не правильно, полей много, не станешь писать проверки и перезаписывать значение на NULL и тд
Обычно используют какой-нибудь паттерн, не пишут всё вручную. Например в моих проектах часто встречается Data Mapper, соответственно у всех сущностей есть описание всех полей, которые могут быть прочтены или записаны в БД. И там же указывается, какие есть ограничения у полей (валидации, фильтрации и т.д.).

Достаточно реализовать один универсальный класс, который будет собирать данные о сущностях и таскать его за собой по проектам. Ну или взять уже готовые решения (по-моему уже все популярные фреймворки умеют всё это из коробки, в большинстве есть полноценные ORM).
0
1298 / 992 / 230
Регистрация: 01.10.2018
Сообщений: 3,860
17.11.2025, 13:27
Можно проверять (фильтровать и т.п.) и без ORM. Начните хотя бы с использования фильтрующих функций PHP.

Добавлено через 8 минут
Кстати, даже модели (объекты) без ORM могут частично выполнять проверку, разделяя ее выполнение с функциями фильтрации ввода. Например, тип проверяется при вводе, а допустимый числовой диапазон - уже в модели.
0
 Аватар для sad67man
2590 / 1495 / 688
Регистрация: 23.08.2015
Сообщений: 3,774
17.11.2025, 14:22
Цитата Сообщение от Fixmon Посмотреть сообщение
А явно, записывать null, делать лишние проверки в php перед в sql NULL.
Это как то не правильно, полей много, не станешь писать проверки и перезаписывать значение на NULL и тд
Вы хотите, чтоб php за вас додумал что вы хотите сделать..
Допустим при update если поле не пришло - это NULL или должно остаться старое значение?

Цитата Сообщение от Fixmon Посмотреть сообщение
При выполнении запроса, возможно записать NULL по умолчанию.
- Если переменная не существует
- Либо явно указать при записи значение null
Естественно вы должны все явно указывать. Оно и читаться будет лучше - без всякой магии.

Цитата Сообщение от Fixmon Посмотреть сообщение
Возможно ли данную задачу сделать, более универсальной что ли...
Тут надо код смотреть - в чем там у вас возникает проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.11.2025, 14:22
Помогаю со студенческими работами здесь

Проверка переменных на пустоту и запись в БД NULL
Здравствуйте! Есть несколько переменных, значение которых подставляется из полей формы (конкретно...

Как проверить не пусты ли куки, и если пустые, то как вывести соответствующее сообщение
Столкнулся с такой проблемой, нужно при нажатии на кнопку "Купить", чтобы проверялись куки, и если...

NULL или пустая строка
Добрый день! Есть код: $qwe=''; if ($qwe=='') echo var_dump($qwe); $asd=NULL; if...

Ошибка с пустым запросом Call to a member function fetch_assoc() on null in
Писал модуль новостной ленты для сайта но при загрузке вылезла ошибка Fatal error: Call to a member...

Если запись в БД найдена - вывести содержимое определённого поля, иначе - соответствующее сообщение.
Имеется база данных mysql. В базе данных есть таблица с 3 колонками id, nik, silv. Есть php код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru