I'm flummoxed by this error, even worse is that the code seems to work
sometimes but I can't see any pattern in the data that causes it.
The code is as follows:-
        try
        {
            $insQuery = "INSERT INTO log ";
            // $insQuery .= "(seqno, year, month, day, hour, minute, waterway, pk, place, distance, eng_hrs, fuel_cm, fuel_lt, note, type, sailing)";
            $insQuery .= "(seqno, year, month, day)";
            $insQuery .= " VALUES ";
            // $insQuery .= "(:seqno, :year, :month, :day, :hour, :minute, :waterway, :pk, :place, :distance, :eng_hrs, :fuel_cm, :fuel_lt, :note, :type, :sailing );";
            $insQuery .= "(:seqno, :year, :month, :day);";
            $st = $db->prepare($insQuery);
            foreach ($rows as $row)
            {
                $row['seqno'] = $seqno++;
                $st->execute($row);
            }
            $st->closeCursor;
        }
        catch (PDOException $e)
        {
            dbglog("PDO() insert error" . $e->getMessage());
            dbglog("insquery: $insQuery");
            foreach($row as $k=>$v)
            {
                dbglog("k is: $k, v is $v");
            }
        }
... and what I'm seeing in the log is:-
    13:53:59 192.168.1.4: PDO() insert errorSQLSTATE[HY000]: General error: 25 bind or column index out of range
    13:53:59 192.168.1.4: insquery: INSERT INTO log (seqno, year, month, day) VALUES (:seqno, :year, :month, :day);
    13:53:59 192.168.1.4: k is: year, v is 2011
    13:53:59 192.168.1.4: k is: month, v is 11
    13:53:59 192.168.1.4: k is: day, v is 12
    13:53:59 192.168.1.4: k is: hour, v is 10
    13:53:59 192.168.1.4: k is: minute, v is 00e
    13:53:59 192.168.1.4: k is: waterway, v is 
    13:53:59 192.168.1.4: k is: pk, v is 
    13:53:59 192.168.1.4: k is: place, v is Cappy
    13:53:59 192.168.1.4: k is: distance, v is 
    13:53:59 192.168.1.4: k is: eng_hrs, v is 2695.3
    13:53:59 192.168.1.4: k is: fuel_cm, v is 8.5
    13:53:59 192.168.1.4: k is: fuel_lt, v is 
    13:53:59 192.168.1.4: k is: note, v is Engine started after replacing blown mega-fuse, all OK otherwise
    13:53:59 192.168.1.4: k is: type, v is TEF
    13:53:59 192.168.1.4: k is: price, v is 
    13:53:59 192.168.1.4: k is: sailing, v is 1
    13:53:59 192.168.1.4: k is: seqno, v is 0
So what does "General error: 25 bind or column index out of range"
actually mean, I could find nowhere that explains it.  Now my guess is
that it's telling me that I have a column name wrong somewhere but my
'log' table definitely has columns year, month, day and seqno of the
correct type.  Maybe I have the syntax wrong somehow for the VALUES()
bit but again I can't find any really good explanation of exactly what
the syntax is, it seems decidedly woolly.
-- 
Chris Green