From: oliver dot klink at volksbank-rems dot de
Operating system: Windows Server 2003
PHP version: 5.2.0
PHP Bug Type: MySQLi related
Bug description: bind_param / explode not updating an array as parameters
Description:
------------
I try to use mysqli_stmt_bind_param with several elements of an array as
parameters. But it seems that these parameters are not updated properly.
In the sample code I initialize the var $data with two values. Otherwise I
would get an error saying that the column is not allowed to be null, when I
execute the statement.
These start values should be overwritten by the values generated by the
explode function. print_r shows that the array $data gets updated as
expected while the values transmitted by mysqli_stmt_execute are not.
If I place the mysqli_stmt_bind_param after the explode-command the script
works as expected, but I think that's not how mysqli_stmt_bind_param is
meant to be used.
Reproduce code:
---------------
<?php
$dw = new mysqli("localhost", "****", "****", "testdb");
$dw->query("CREATE TABLE IF NOT EXISTS `test` (
`filiale` smallint(5) unsigned NOT NULL,
`berater` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`filiale`)
)");
$data = array(1,2);
$test = array("10;123","20;456");
$stmt = $dw->prepare("INSERT INTO test (filiale, berater) VALUES (?,?)");
$stmt->bind_param("ii",$data[0],$data[1]);
foreach ($test as $buffer) {
$data = explode(";", $buffer);
print_r($data);
$stmt->execute();
echo $dw->error."<br> <br>";
}
$stmt = null;
$dw = null;
?>
Expected result:
----------------
Array ( [0] => 10 [1] => 123 )
Array ( [0] => 20 [1] => 456 )
Actual result:
--------------
Array ( [0] => 10 [1] => 123 )
Array ( [0] => 20 [1] => 456 ) Duplicate entry '1' for key 1
--
Edit bug report at http://bugs.php.net/?id=40154&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=40154&r=trysnapshot44
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=40154&r=trysnapshot52
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=40154&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=40154&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=40154&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=40154&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=40154&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=40154&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=40154&r=support
Expected behavior: http://bugs.php.net/fix.php?id=40154&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=40154&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=40154&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=40154&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=40154&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=40154&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=40154&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=40154&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=40154&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=40154&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=40154&r=mysqlcfg