Проверка значений MySQL NULL с помощью PHP

Вот как выглядит мой стол.

id col1 col2 --------------- 1 ax 2 NULL y 3 NULL z 4 NULL t 

col1 имеет значение по умолчанию NULL .

Я хочу использовать данные col1. Если col1 не равен null, в противном случае используйте данные col2.

 function something($col1,$col2) { if(is_null($col1) == true) $var = $col2 else $var = $col1 return $var; } function something2($col1,$col2) { if($col1 === NULL) $var = $col2 else $var = $col1 return $var; } 

Вот моя проблема. Обе эти функции возвращают значения $ col2. Но, как вы можете видеть в первой строке, столбец col2 не равен NULL. Что я делаю не так? UPDATE: Ищете решение с PHP, и мне нужны значения col1 и col2.

Также я хочу узнать, является ли использование значений NULL лучшей практикой для этого примера?

Я вижу множество проблем в вашем вопросе:

Я хочу использовать данные col1. Если col2 не является нулевым, If It's я буду использовать данные col2.

Я предполагаю, что вы имеете в виду, что хотите использовать данные col2, если col1 IS null в противном случае использует col1. В этом случае у вас есть проблемы на вашем php. Не уверен, что вы предоставили образец кода или нет, но вы не передаете какие-либо переменные функции и не объявляете их глобальными внутри функции.

 function something($col1, $col2){ if(is_null($col1) == true) $var = $col2; else $var = $col1; return $var; } function something2($col1, $col2){ if($col1 === NULL) $var = $col2; else $var = $col1; return $var; } echo something('a','x'); echo something2('a','x'); 

Это дает вам «а» в обоих случаях

 echo something(NULL,'b'); echo something2(NULL,'b'); 

Это дает вам "b"

Вы должны посмотреть на использование COALESCE () в вашем запросе sql, только вернуть данные, которые вы хотите отобразить. Это помешало бы вам вообще не нуждаться в этой функции / логике.

 SELECT Id, COALESCE(col1, col2) FROM yourTable 

Кроме того, для PHP вы можете рассмотреть возможность изменения if(is_null($col1) == true)

и используя if(is_null($col1)) . Он меньше, более кратким и устраняет проблемы с количеством = знаков для использования, а оболочка True

Обновление ответа на включение варианта, предложенного Андреасом:

 SELECT Id, col1, col2 , IFNULL(col1, col2) AS NotNullColumn FROM yourTable 

Проверьте IFNULL , он даст вам col1, если это не null. Иначе это даст вам col2.

 SELECT id, IFNULL(col1, col2) FROM <table>;