2016-03-26 6 views
-2

Ich habe Probleme mit meinem PHP aus einer MySQL-Abfrage. Ich weiß, dass die Abfrage funktioniert Ich bin vardump() das Array und ich kann alle Ergebnisse sehen und kann bestätigen, dass die MySQL-NULL innerhalb des Arrays zurückgibt.Mit PHP zu erkennen, einen Nullwert aus einer MySQL-Abfrage

Ich benutze den folgenden Code und bekomme True zurück als die Antwort, obwohl der Array-Wert Null ist. Wie Sie an meinem Code sehen können, versuche ich hier zu übertreiben, weil ich das nicht zur Arbeit bringen kann.

---> Code Herausgegeben mit Kommentaren zu helfen:

Es gibt eine MYSQL Tabelle "table1" mit Feldern ("holder_type" = "Mitarbeiter" und "termination_date", die NULL ist) bezeichnet. Ich weiß, dass das SQL funktioniert, weil ich ungefähr 40 Felder einziehe und einen vardump mit dem Inhalt sehen kann. Ich denke, dass etwas nicht stimmt mit, wie ich nach dem NULL im assoc-Array suche, aber ich finde es nicht heraus.

Vielen Dank für die Geduld ... Ich bin ein Excel-Nerd versuchen, auf PHP/SQL migrieren.

$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'; 
} 

Irgendwelche Ideen, wie Sie das beheben können? Hält die Rückkehr "wahr". Wenn es hilft, sieht mein vardump Array so aus: array (44) {["holder_type"] => string (8) "Mitarbeiter" ["termination_date"] => NULL}

+0

Sie erkennen, dass beide '$ term = 'false';' und '$ term = 'true',' werden als Zeichenfolgen für wahr/falsch Überprüfung statt booleans. Wollen Sie das wirklich erreichen? Als boolean '$ term = false;' und '$ term = true;' –

+1

Bitte geben Sie uns eine [MCVE] – Rizier123

+0

können Sie uns ein wenig mehr Kontext Ihres Codes geben? Wie im Code, der zu dieser Skriptausführung führt und wie du die Antwort verifizierst, ist "true" –

Antwort

1

Immer wenn versucht wird zu bestimmen, ob a Der MySQL-Wert ist in PHP null, ich empfehle, ihn in der Abfrage selbst anzugeben.

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

diese Weise die überprüfen Sie nur in PHP zu tun haben, ist:

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

COALESCE() Sie einen Standardwert für NULL-Werte angeben können, und man kann tatsächlich so viele Fehlerwerte angeben wie du willst.

Beispiel:

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

Dies würde termination_date zurück, wenn gesetzt, award_date wenn gesetzt und es gibt keine termination_date und 'NULL' sonst.

0

Fehlalarm! Es hat gut funktioniert. Ich machte die klassische Idiot-Bewegung, indem ich in einer if-Anweisung später nur 1 "=" verwendete und die Antwort überging.

if ($term='true') {} 

statt

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