使用PHP从MYSQL查询中识别NULL值

时间:2016-03-26 19:07:07

标签: php mysql arrays

我在使用MYSQL查询时遇到问题。我知道查询正在运行我是vardump()数组,我可以看到所有结果,并可以确认MYSQL在数组中返回NULL。

我正在使用以下代码并将 true 作为答案返回,即使数组值为null。正如你从我的代码中看到的那样,我在这里尝试过度杀伤,因为我无法让它工作。

--->编辑代码以帮助评论:

有一个名为“table1”的MYSQL表,其中包含字段(“holder_type”=“employee”和“termination_date”为NULL)。我知道SQL正在运行,因为我实际上已经进入大约40个字段并且可以看到内容的vardump。我在想如何检查assoc数组中的NULL有什么问题,但我不知道它。

感谢您的耐心......我是一名优秀的书呆子试图迁移到php / sql。

$query = "SELECT * from table1";
$result = $db->query($query);
$award_array = $result->fetch_assoc();

if (is_null($award_array['termination_date']) 
OR !$award_array['termination_date'] 
OR $award_array['termination_date'] == '' 
OR $award_array['termination_date'] == 'NULL' 
OR $award_array['termination_date'] == null) {
    $term = 'false';
}
else {
    $term = 'true';
}

有关如何解决此问题的任何想法?继续回归“真实”。如果有帮助,我的vardump数组看起来像这样:     array(44){[“holder_type”] => string(8)“Employee”[“termination_date”] => NULL}

2 个答案:

答案 0 :(得分:1)

每当尝试确定PHP中的MySQL值是否为null时,我建议在查询本身中指定它。

SELECT COALESCE(table.termination_date,'NULL')
FROM table_name table

这样,您在PHP中唯一需要检查的是:

if($award_array['termination_date'] === "NULL") {
    $term = true;
}
else {
    $term = false;
}

COALESCE()允许您为NULL值指定默认值,您可以根据需要实际指定多个回退值。

示例:

SELECT COALESCE(table.termination_date, table.award_date, 'NULL')

如果设置,则返回termination_date,如果设置则返回award_date,否则没有terminate_date,否则返回'NULL'。

答案 1 :(得分:0)

误报!它运作得很好。我做了一个经典的白痴行动,后来在一个if语句中只使用了1“=”并且覆盖了答案。

if ($term='true') {}

而不是

if ($term=='true') {}