[nycphp-talk] Need help understanding NULL
ramons at gmx.net
Sat Aug 29 16:42:14 EDT 2009
lists at nopersonal.info wrote:
> I don't usually use NULL values for anything because no matter how much
> I read I can't figure out the purpose of it. So far this hasn't been a
> problem for me, but I figure it's going to trip me up sooner or later.
> I've read the NULL sections of the PHP & MySQL manuals and even tried
> googling for articles, but the concept of a “a missing unknown value”
> makes my brain hurt. Can someone please, please, please attempt to
> explain--in the simplest terms possible--what the practical
> advantages/disadvantages of using it might be?
I struggled with it for some time as well, because for non-programmers
nothing, empty, null, nada, and nichts are the same thing. I think the easiest
way to get an idea is to look at how strings and integers are stored in a
database table. Unless a default value is specified, the contents of a field
in a database table are set to NULL. That NULL isn't the same as zero for an
integer. Zero is a defined value of an integer variable the same way 1 or
123456 would be. In case of strings, NULL is not the same as an empty string.
So when you read records from a table and then use the field values to make
comparisons you will find that NULL is unequal to zero or an empty string.
While NULL is really nothing, 0 and "" are something - at least for a database
and PHP, because then the database and PHP know exactly what is meant, whereas
with NULL there is no defined value.
Same way the other way around. Let's say, you create a simple ledger
application to balance your checkbook. You have 100$ and spend it all on PHP
books. So after entering the expense you end up with 0$, which is an explicit
amount and the result of your calculation. NULL is not specific and if you do
the math you get zero and not 'nothing'.
In regards to strings, let's say you have a string and you need to strip all
vowels and all occurrences of "s". The original string is "sea", not you strip
the characters out and you get "". Similar to the math task above, it is a
definitive results, whereas NULL isn't.
That said, I think it is very important to initialize every variable you use
in your script right at the beginning of the script, even if you never will
use the variable with that value. The reason for that is that all your
variables will have a definitive value. Same applies for variables that get
values assigned that come from database tables or HTML forms (or better to
say, any source no matter what). First order of business is to check it for
being a NULL value and assigning it a definitive (explicit) value, which can
include 0 or "". Otherwise PHP will complain or in case of integers just
assume something. Typically, that is 0, but I rather tell PHP what it is than
have PHP pull something out of its lower torso.
Sure, one could say that NULL is the same as 0 or "", but that is a purely
arbitrary interpretation, although maybe a convenient one.
I hope I explained it in an understandable way.
More information about the talk