Null из PHP в SQL запрос - за и против.

weregod

unserializer
Василий М., никогда не возникал вопрос, почему
PHP:
('' !== null)
возвращает TRUE?
 

WMix

герр M:)ller
Партнер клуба
мое мнение, превращение null в NULL это тоже самое что поглотить notice с помощью @ или это ожидается
PHP:
 $model->update( array( 'field' => isset($field) ? $field : new Zend_Db_Expr('NULL')))
, или я хотел-бы получить ошибку!
 

Василий М.

Новичок
Василий М., никогда не возникал вопрос, почему
PHP:
('' !== null)
возвращает TRUE?
Я прекрасно это понимаю.

Ещё раз повторю - NULL - это тип данных. Тип данных, обозначающих, что значение не известно.
Любой скрипт на PHP получает данные из формы в виде строк. Эти строки обычно по привычке и пишутся в СУБД.
Потому что никому руками не хочется преобразовывать перед вставкой в базу пустую строку в NULL.
Тем не менее, пустое поле из формы - это именно NULL. Нет значения. Не известно. Мы не знаем.
Тот факт, что PHP вам предоставляет значение из запроса в виде строки не означает, что записывать в базу нужно пустую строку.
 

WMix

герр M:)ller
Партнер клуба
Василий М.
или я не хочу отвечать на вопрос и мой ответ '' или я еще не ответил и значение NULL
 

MiksIr

miksir@home:~$
Тем не менее, пустое поле из формы - это именно NULL. Нет значения. Не известно. Мы не знаем.
Тот факт, что PHP вам предоставляет значение из запроса в виде строки не означает, что записывать в базу нужно пустую строку.
С хрена ли? Это вы решили?
Если человек сохранил форму с пустым полем - то он сохранил пустое поле.
Да, из формы нет возможности просто так сохранить NULL, да и не нужно, ибо NULL - это нет значения. А оно есть! - пустая строка.
А вот если из формы ничего не пришло - нет поля вообще такого в форме - вот и не пришло - то значения нет. Это NULL.
 

fixxxer

К.О.
Партнер клуба
С хрена ли? Это вы решили?
Если человек сохранил форму с пустым полем - то он сохранил пустое поле.
Да, из формы нет возможности просто так сохранить NULL, да и не нужно, ибо NULL - это нет значения. А оно есть! - пустая строка.
А вот если из формы ничего не пришло - нет поля вообще такого в форме - вот и не пришло - то значения нет. Это NULL.
то есть у чекбокса либо true либо null

доооооооооо
 

Василий М.

Новичок
А оно есть! - пустая строка.
Это с точки зрения PHP есть значение. А с точки зрения пользователя - нет. И пустое поле об этом говорит - у меня нет значения. Не заполнен URL адрес в форме, значит у пользователя его НЕТ, нет значения. А вы пишите в базу пустую сроку как значение. Зачем хранить абсолютно ложную информацию? Пустое значение не может быть URL адресом.
 

Beavis

Banned
Ещё раз повторю - NULL - это тип данных. Тип данных, обозначающих, что значение не известно.
А если оно известно, и это значение - пустая строка, то что делать?
У тебя все поля чтоли в таблицах могут быть NULL? Ты ещё где-нибудь такое видел?)
 

radioheaded

PHP нуб
Я что, правда все это вижу на самом деле? Вы действительно сретесь из-за того, хранить «ничего» в виде пустой строки, NULL, нуля или значения перечислимого поля 'None'?

Какая разница, что пришло от пользователя? Вы же разработчик. Вы решаете, что и как должно быть в зависимости от конкретной ситуации, а не пользователь за вас. Если юзер оставил поле пустым, то не надо за него думать, что он этим хотел сказать. Ибо это вы должны знать, что означает оставление поля пустым. Как вообще об этом можно спорить? Или вы просто троллите друг друга, а я не заметил.
 
  • Like
Реакции: Gas

WMix

герр M:)ller
Партнер клуба
radioheaded
не сретесь а дискутируете, и тема "Null из PHP в SQL запрос - за и против."

форма это наверное только часть дискуссии!
 

radioheaded

PHP нуб
radioheaded
не сретесь а дискутируете, и тема "Null из PHP в SQL запрос - за и против."
Ну если перечитать вопросы Фаната в первом посте, то по существу никто и не высказывается. Возник какой-то неконструктивный именно срач, а не диспут.

Если имелась в виду замена при сравнении с NULL, то, если мне память не изменяет, иного способа проверить на NULL кроме IS [NOT] NULL в MySQL не существует.
Если имелось в виду сохранение NULL в каком-то виде (NULL, пустая строка, 0, еще что угодно...), то здесь-то о чем спорить?

Я бы понял, если бы спрашивали о каких-то невидимых сторонах использования NULL. Вот, например, слышал когда-то мнение, что NULL лучше не использовать, ибо снижает производительность. Вот об этом можно было бы подискутировать. Разобраться как MySQL хранит NULL, как работает с ним в запросах, что там с оптимизатором в этом плане и т.п.

А сейчас мне это напоминает спор «табы или пробелы».
 

Василий М.

Новичок
А если нужно сохранить именно пустую строку? Пустая строка - это же тоже значение, и это совсем не то же самое что null
Так что ты что-то нелогичное вообще сделал...
Хот одну ситуацию подобную приведи, когда это нужно.
 
Сверху