in reply to NULL and placeholders

To get a NULL, you need it to pass an undefined value. If $var is undefined, $var || undef is still undefined. What is the code you are using to do the insert, and what's the code you are using to test the result?

Abigail

Replies are listed 'Best First'.
Re: Re: NULL and placeholders
by rendler (Pilgrim) on Jul 26, 2002 at 13:34 UTC
    This is using MHQ::DBI as the abstraction layer (which I should have mentioned in the first place, sorry).
    dbi_exec("INSERT INTO nodes VALUES NULL,?,?,?,?,NULL,NULL,?,?, +?,?,?,?,?,?,?)", $node_type, $node_name, $node_subject, .............. );
      I don't understand - in your code you've hardcoded to NULL, better to omit columns if you want to always have the values empty in your code like this:
      INSERT INTO nodes ( column1, column3) values ( ?, ?)
      I thought your question was about what happens when you want to execute a query and some of your variables are empty. This is what I get when working with DBI, DBD::mysql.
      mysql> show fields from emptycols; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | a | varchar(12) | | | | | | b | varchar(5) | YES | | NULL | | | c | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ my $dbh = DBI->connect('dbi:mysql:test',$ENV{'USER'}); my $sth = $dbh->prepare("INSERT INTO emptycols VALUES (?,?,?)"); $sth->execute("apple", "red",17); $sth->execute("apple", undef,10); $sth->execute("orange", "ora",undef); mysql> select * from emptycols; +--------+------+------+ | a | b | c | +--------+------+------+ | apple | red | 17 | | apple | NULL | 10 | | orange | ora | NULL | +--------+------+------+ 3 rows in set (0.00 sec)