NYCPHP Meetup

[nycphp-talk] Need help understanding NULL

John Campbell jcampbell1 at gmail.com
Sat Aug 29 22:00:45 EDT 2009


You should be aware that PHP and SQL have completely different concepts of null.

In php, null is a unique magic value that means "undefined", and if
two things are null, then they are equal.

<?php
var_dump($a===$b) // bool(true)
var_dump(NULL === NULL) // bool(true)

Contrast this with SQL, where null is akin to "not yet known value"

Consider:
"SELECT NULL = NULL;"
gives
--------
| NULL |
--------
In a SQL view of the world, that can be interpreted as:
Are two not yet known values equal?
and the answer is:
"Not yet known"

In sql, every comparison to NULL, yields another NULL.
That is why 'SELECT * WHERE foo = NULL' doesn't do what you might
expect.  In fact that query is guaranteed to always return zero rows.

It is a fact of life that pretty much every language handles NULL
differently, and whenever I learn a new language, it is one of the
first things I research.

Regards,
John Campbell



More information about the talk mailing list