Подтвердить что ты не робот

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

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

$blankVar = '';

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

$blankVar = null;

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

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

define('EMPTY', '');
4b9b3361

Ответ 1

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

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

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

$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 (по крайней мере, некоторым). В большинстве случаев это нормально.

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

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

INSERT INTO foo SET bar = ""

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

INSERT INTO foo SET bar = NULL

БОЛЬШАЯ РАЗЛИЧИЯ.

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

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