Hello,

Is anyone familiar with what would cause an error like this:
Warning: Statement isn't valid anymore in includes\import.inc.php on
line 810

I'm using MySQL 4.1.2a, PHP 5.0.0 with Apache 2.0.50.  All tables are
InnoDB format.

The calling function is:
function insert_phone($ContactID) {
global $kTABLE_PREFIX;

foreach( $this->PhoneList as $addr ) {
        $db = DoMySQLConnect(); // connect
        $sql = "INSERT INTO {$kTABLE_PREFIX}phone (PhoneType, Phone,
Extension, ContactID) VALUES (?, ?, ?, ?)";
        if( !$stmt = $db->prepare($sql) ) { // prepare it
                printf("Error with %s:<br>%s<br>",$sql, $db->error );
        } else {
                if( !$stmt->bind_param("sssd", $addr->PhoneType,
$addr->Phone, $addr->Extension, $ContactID ) ) {
                        printf("Error (#%d): %s;<br>%s<br>",
$stmt->errno, $sql, $stmt->error );
                } else {
                        $stmt->execute(); // execute
                        $stmt->free_result();
                        $stmt->close();
                }
        }
        $db->close();
}
}

bind_param fails and I end up with:
Error (#0): INSERT INTO ap2004phone (PhoneType, Phone, Extension,
ContactID) VALUES (?, ?, ?, ?);

insert_phone is part of a class, Phone.

import.inc.php contains class definitions for a bunch of different
objects, contacts, email addresses, addresses etc that are being
massaged from a single flat table into relational tables.  There are
around 2000 inserts performed in a single import.  At the beginning of
the import I disable all foreign key checks etc 
        ...
        $sql =  "SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT; "
                .       "SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS; "
                .       "SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION; "
                .       "SET NAMES utf8; "
                .       "SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS,
UNIQUE_CHECKS=0; "
                .       "SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0; "
                .       "SET @OLD_SQL_MODE=@@SQL_MODE,
SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\"; ";

        $db = DoMySQLConnect();
        $db->multi_query($sql);
        $db->close();
        ...

And at the end of the import I re-enable them.

As far as I can tell, there is nothing wrong with the INSERT statement,
or the variables it is inserting.  The errors appear randomly, and for
different objects at different times.  Occasionally there are no errors,
and then other times there are hundreds.  There are no mysql errors in
the mysql error log either.

Anyone have any ideas?  I'm going crazy :(

Thanks,
Corey

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to