Question: I am parsing an XML feed into a MYSQL table using simplexml\_load\_file(). Some of the variables are blank, I would like them to be actual *NULL* instead of NULL, or is there even a difference?

```
$xml = simplexml_load_file('cb.xml') or die ('Bad XML File');
foreach($xml->item as $item) {
    $name = $item->name;

//Tried

if ($name == '') {
    $name = 'NULL';
}

//And

if ($name == '') {
    $name = NULL;
}

mysql_query("INSERT INTO cb (name) VALUES ('$name')");

```

Answer: 
This is because you're giving MySQL a string:

```
.... ('ANYTHING WITHIN QUOTES IS A STRING')

```

And the PHP `null` value, when "casted" to a string, becomes an empty string. So your first try gave `... ('NULL')`, and now it gives `... ('')`.

You must use the `NULL` keyword inside the query, without quotes, to insert `NULL` into a database field.

```
mysql_query("INSERT INTO cb (name) VALUES (" . ($name == null ? "NULL" : "'$name'") . ")");

```

Oh, and as usual, take care not to get SQL-injected with your unprotected `$name` variable.
if you're using more than one value and shorthand if else does work then do this: (we will insert the null data in column 3) \* Notice that the single quotes are omitted.. this is because "NULL" cannot be entered in as a string for sql or else it will be a string NULL not an SQL NULL which is what we want.

```
//condition
if ($col3_var !== NULL)
   $col3_var = "'$col3_var'";
else
   $col3_var = "NULL"; //SQL will omit the "" here

$sql = "INSERT INTO tablename
       (col1, col2, col3...)
       VALUES
       ('$col1_var', '$col2_var', $col3_var)";

$result = mysql_query($sql) or die("Err: " . mysql_error());

```