Re: MySQL, PHP or ghost?
| From: | David T-G | Date: | Wed, 27 Aug 2003 14:09:06 +0000 |
| Subject: | Re: MySQL, PHP or ghost? | ||
| References: | 1 | Groups: | php.db |
| Request: | Send a blank email to php-db+get-30116@lists.php.net to get a copy of this message | ||
Peter --
..and then Peter Beckman said...
%
% Seems that either I don't understand mysql, or something.
Looks like it, though I admit that the manual doesn't adequately explain
your results. Check out section 6.2.2.4 for details.
%
% My table, with the non-important things removed...
..
%
% So my assumption is that if I insert with year="" it should use the
% default. Or at least 0000.
That makes sense. And so what is the default? Looks like it is, for
some reason, 2000. [This isn't a TIMESTAMP field, so we don't
necessarily expect it to be "this year".]
%
..
% mysql> update plate set year="" where pid=65;
..
% +-----+---------+------+-
% | 65 | DVF0343 | 2000 |
% +-----+---------+------+-
%
% 2000? What? Why? Confused. PHP or Mysql fault?
Looks like it's standard mysql behavior:
mysql> create table ytest (pid int unsigned not null auto_increment primary key, y year(4));
Query OK, 0 rows affected (0.00 sec)
mysql> describe ytest;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| pid | int(10) unsigned | | PRI | NULL | auto_increment |
| y | year(4) | YES | | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> insert into ytest values
mysql> ('',1),('',''),('','2000');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 4
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 2000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
mysql> update ytest set y = "" where pid = 3;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 2000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
mysql> update ytest set y = '0' where pid =3 ;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> update ytest set y = '45678' where pid = 2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> select * from ytest;
+-----+------+
| pid | y |
+-----+------+
| 1 | 2001 |
| 2 | 0000 |
| 3 | 2000 |
+-----+------+
3 rows in set (0.00 sec)
Note that I sometimes get warnings and sometimes don't. I haven't dug
into them, though.
%
% Beckman
% ---------------------------------------------------------------------------
% Peter Beckman Internet Guy
% beckman@purplecow.com http://www.purplecow.com/
% ---------------------------------------------------------------------------
HTH & HAND
:-D
--
David T-G * There is too much animal courage in
(play) davidtg@justpickone.org * society and not sufficient moral courage.
(work) davidtgwork@justpickone.org -- Mary Baker Eddy, "Science and Health"
http://justpickone.org/davidtg/ Shpx gur
Pbzzhavpngvbaf Qrprapl Npg!