Mombu the Php Forum sponsored links

Go Back   Mombu the Php Forum > Php > #29283 : Statement isn't valid anymore warning during executing prepared mysqi queries
User Name
Password
REGISTER NOW! Mark Forums Read

sponsored links


Reply
 
1 18th February 05:40
php-bugs
External User
 
Posts: 1
Default #29283 : Statement isn't valid anymore warning during executing prepared mysqi queries



ID: 29283
Comment by: corey_gilmore at dpc dot senate dot gov
Reported By: divisor at ad69 dot com
Status: ****yzed
Bug Type: MySQL related
Operating System: FreeBSD 4.10
PHP Version: 5.0.0
Assigned To: georg
New Comment:

I'm experiencing the same issue as well with Apache 1.3.31 and 2.0.50
on XP SP2 and XP SP1 with PHP 5.0, 5.01 and 5.0-DEV from
php5-win32-200408312230.zip. MySQL 4.1a, 4.1.2, 4.1.3 and now 4.1.4.
It occurs in a page where I select a large amount of data from one
table, process it, and insert it into multiple tables. There are 287
rows returned from the first select, and then 400-500 rows inserted.

Line 644 begins with 'if( !$stmt->execute() ) {'

Warning: Statement isn't valid anymore in
....\import\contact.class.inc.php on line 644
Error inserting email (#0): INSERT INTO email (EmailType, Email,
ContactID) VALUES (?, ?, ?);

$sql = "INSERT INTO {$kTABLE_PREFIX}email (EmailType, Email, ContactID)
VALUES (?, ?, ?)";
if( !$stmt = $db->prepare($sql) ) { // prepare it
printf("Error with %s:<br>%s<br>",$sql, $db->error );
}
if( !$stmt->bind_param("ssi", $addr->EmailType, $addr->Email,
$ContactID ) ) {
printf("Error (#%d): %s;<br>%s<br>%s : %s : %s<br>", $stmt->errno,
$sql, $stmt->error, $addr->EmailType, $addr->Email, $ContactID );
}

if( !$stmt->execute() ) {
printf("Error inserting email (#%d): %s;<br>%s<br>%s : %s : %i<br>",
$stmt->errno, $sql, $stmt->error, $addr->EmailType, $addr->Email,
$ContactID );
$this->dump();
printf("\$stmt = <pre>%s</pre><br>", var_export($stmt, TRUE) );
}

This has been an issue since RC1, and is a bit frustrating. In my case
reloading the page to re-import works, eventually, but since the entire
process takes about 5 minutes it is painful.


Previous Comments:
------------------------------------------------------------------------

[2004-08-20 14:47:35] paradox at gmx dot at

i've got the same problem with php 5.0.1 loaded as an apache module -
mysql 4.1.3beta, win2k
it seems that the error occurs more often on much used servers. on my
dedicated test-server it is approximately one error on 100 statements.

------------------------------------------------------------------------

[2004-08-03 08:48:09] alex at avannaproductions dot com

I'll chime in as another voice of reason: this should be
fixed before 5.0.1. At the moment, prepared statements
are basically useless, as half the time they give this
error and fail to return any data. I'm on MacOS X and
Apache 2, with the same problem.

------------------------------------------------------------------------

[2004-07-25 18:33:46] dev at edwinchu dot info

Hi,

I have got the same problem. I am using PHP5 release with
MySQL4.1.3-beta.

The code is simple:

$mysqli = new mysqli(); // connected successfully
$stmt = $mysqli->prepare("SOME VALID QUERY");
$stmt->execute(); // No problem here

$mysqli2 = $mysqli;
$mysqli2->query("THE SAME QUERY"); // Still OK
$stmt2 = $mysqli2->prepare("THE SAME QUERY");
$stmt2->execute();

The last line failed and returning "Warning: Statement isn't valid
anymore in ***".

------------------------------------------------------------------------

[2004-07-21 16:24:11] divisor at ad69 dot com

it caused randomly on all statetments, prepare() was ok but execute()
failed:

if ($stmt=$DB->prepare("select something from table where name=?")) {
$stmt->bind_param('s',$name);
$stmt->execute(); // HERE PHP WRITE WARNING
// AND STMT COINTAIN NO DATA

variables stmt->error, stmt->errno are empty

that's strange but after removing lines 182-187 from
ext/mysqli/php_mysqli.h:

if (!strcmp((char *)__name, "mysqli_stmt")) {\
if (!((MYSQL_STMT *)__ptr)->mysql) {\
php_error(E_WARNING, "Statement isn't valid
anymore");\
RETURN_NULL();\
}\
}\
}

it started working without any problems. but of course this 'hack' of
php code isn't good

------------------------------------------------------------------------

[2004-07-21 10:03:11] georg@php.net

Please provide a short script, where we can see where the
error occurs. Also try to catch the errormessages via
->stmt_error/errno properties.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/29283

--
Edit this bug report at http://bugs.php.net/?id=29283&edit=1
  Reply With Quote


  sponsored links


Reply


Thread Tools
Display Modes




Copyright © 2006 SmartyDevil.com - Dies Mies Jeschet Boenedoesef Douvema Enitemaus -
666