В PHP, какие различия между NULL и установкой строки равны двум одинарным кавычкам

Я использовал такие вещи, когда мне нужны пустые значения.

$blankVar = ''; 

Затем, через несколько месяцев, я решил, что это выглядит лучше и имеет более четкие намерения.

 $blankVar = null; 

Это работало без икоты на некоторое время, но недавно с подготовленными PDO заявлениями я столкнулся с проблемой. Привязывание значения к нулю заставило запрос сбой, а привязка его к «нет». Мне нужно было привязать его к нулевому значению, так что, если бы условие было выполнено, оно вставило бы пустые данные.

Каковы различия между 2? Я все еще думаю, что равным нулю (или хотя бы константа) выглядит лучше, так что я должен делать это?

 define('EMPTY', ''); 

Null – это еще один тип данных в PHP, который имеет только одно значение (null). Поскольку PHP – это плохо типизированный язык, это может сбивать с толку, как он обрабатывает разные значения.

"", 0, "0", False, array(), Null – все считаются False в PHP.

Нуль, однако, является другим видом животных. Основная несовместимость с использованием Null заключается в том, что вы не можете определить, isexet ().

 $x = false; isset($x) -> true echo $x -> "" $y = null; isset($y) -> false echo $y -> "" //$z is not set isset($z) -> false echo $z -> E_NOTICE 

Таким образом, null является нечетным в том смысле, что он не соответствует нормальным правилам правил в PHP (по крайней мере, некоторым). В большинстве случаев это нормально.

Когда дело доходит до столбцов базы данных, NULL PHP не имеет места там. Вы видите, SQL – это строковый язык. NULL SQL должен быть представлен NULL без кавычек.

Поэтому, если вы хотите поле EMPTY, установите для него значение ""

 INSERT INTO foo SET bar = "" 

Но если вы хотите поле NULL, установите его в NULL

 INSERT INTO foo SET bar = NULL 

БОЛЬШАЯ РАЗНИЦА.

Но если вы попытаетесь напрямую вставить PHP NULL, он добавит к запросу нулевые символы (что оставляет вас с пустой или синтаксической ошибкой, в зависимости от того, цитируете ли вы ее).

null – это специальное значение-заполнитель на языке программирования, которое буквально означает «ничего». Это не 0, это не пустая строка, это ничего. В памяти не указана ценность. С другой стороны, пустая строка по-прежнему представляет собой строковый объект, очень короткий:

Ну, это одно, как хорошо выглядит каждый подход, но главное отличие состоит в том, что он является пустой строкой, а другой – неинициализированной переменной (null)

Помимо различий, заявленных Rex, существует два типа сравнений в PHP: свободный и строгий:

http://www.php.net/manual/en/types.comparisons.php

Если в любой емкости используются строгие сравнения или функции типа is_null (), вы получите разные результаты. Тем не менее, при наличии лишних сравнений PHP довольно мягкий.

Я не знаю точно, но вы можете использовать свой нулевой подход, а затем просто typecast, когда используете переменную в контексте, где у вас были проблемы (например, pass (string) $ blankVar). Если это работает, это может означать, что для вашего кода требуется меньше изменений.

«null» – это уникальная вещь, к которой относятся неинициализированные переменные. Вы можете установить для переменной значение null. Существует также «неустановленное» состояние, означающее, что переменная вообще не существует. Вы можете проверить это с помощью функции isset () . Чаще всего используется для проверки того, существует ли элемент массива и, например, способ узнать, получил ли $ _GET ['op'] параметр querystring. Вы также можете сделать переменную unset (удалить элемент массива) с помощью функции unset () . Существует также функция empty (), которая будет проверять, является ли переменная NULL, FALSE, 0 или пустой строкой