Het probleem met PHP is dat een vergelijking tussen null en een lege string (if (null == '')) true is, maar dat wil nog niet zeggen dat PHP het als hetzelfde ziet. Als je isset() gebruikt, haal je wel degelijk de echte NULL-waardes eruit.
Dat gaan we proberen. ;-)
<?php
$dbh = new mysqli($host,$user,$pass,$database);
$sql = "select username, fullname, contract_hours, active from users";
$rs = $dbh->query($sql);
$row = $rs->fetch_assoc();
var_dump($row);
?>
geeft:
Ik ook ;-)
Ik werk niet met nullables, dus het is nooit opgevallen.
Wat ik me wel afvraag:
Waarom kan dat onderscheid wel gemaakt worden, en is de rest, ongeacht het datatype, een string?
> Waarom kan dat onderscheid wel gemaakt worden, en is de rest, ongeacht het datatype, een string?
Pff... het is veel te laat voor dit soort diepzinnige vragen.
Ik denk dat het ermee te maken heeft dat PHP alle scalar-datatypes impliciet cast naar het datatype dat in een bepaalde situatie nodig is. Het maakt dus niet uit of een integer als string wordt opgeslagen, want als je ermee gaat rekenen maakt PHP er vanzelf wel een integer van.
Bovendien gebruik je in een query de string-representatie van een integer, dus is het eigenlijk alleen maar handig dat fetch() er al een string van heeft gemaakt. ;-)