uw Fri Jan 4 18:17:13 2008 UTC
Added files:
/php-src/ext/mysqli/tests mysqli_fetch_assoc_zerofill.phpt
mysqli_stmt_bind_result_zerofill.phpt
mysqli_stmt_bind_param_call_user_func.phpt
Modified files:
/php-src/ext/mysqli/tests mysqli_change_user_insert_id.phpt
mysqli_insert_id.phpt
Log:
Added:
mysqli_fetch_assoc_zerofill.phpt
checks for UNSIGNED ZEROFILL
mysqli_stmt_bind_result_zerofill.phpt
checks for UNSIGNED ZEROFILL
mysqli_stmt_bing_call_user_func.phpt
Needs to be refined once http://bugs.php.net/bug.php?id=43568
has been closed and a decision has been made on call_user_func_array().
There seems to be a BC break between 5_2 -> 5_3 .
Johannes has an eye on it
Modified:
mysqli_change_user_insert_id.phpt
skip test for buggy MySQL Server versions
mysqli_insert_id.phpt
added additional checks
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt
diff -u php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.2
php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.3
--- php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt:1.2 Wed Oct
10 10:43:39 2007
+++ php-src/ext/mysqli/tests/mysqli_change_user_insert_id.phpt Fri Jan 4
18:17:13 2008
@@ -5,6 +5,15 @@
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
+require_once('connect.inc');
+if (!$IS_MYSQLND) {
+ if (!$link = mysqli_connect($host, $user, $passwd, $db, $port, $socket))
+ die("skip Can't test server version, might hit known bug
http://bugs.mysql.com/bug.php?id=30472");
+ if (mysqli_get_client_version($link) < 50123)
+ /* TODO - check wich version got the patch */
+ die(sprintf("skip libmysql %s should have bug
http://bugs.mysql.com/bug.php?id=30472", mysqli_get_client_version($link)));
+ mysqli_close($link);
+}
?>
--FILE--
<?php
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_insert_id.phpt?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/mysqli/tests/mysqli_insert_id.phpt
diff -u php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.2
php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.3
--- php-src/ext/mysqli/tests/mysqli_insert_id.phpt:1.2 Thu Aug 9 10:01:20 2007
+++ php-src/ext/mysqli/tests/mysqli_insert_id.phpt Fri Jan 4 18:17:13 2008
@@ -1,9 +1,9 @@
--TEST--
mysqli_insert_id()
--SKIPIF--
-<?php
+<?php
require_once('skipif.inc');
-require_once('skipifemb.inc');
+require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
?>
--FILE--
@@ -104,7 +104,7 @@
mysqli_free_result($res);
if ($next_id != $row['last_id']) {
- printf("[018] Something is wrong, check
manually. Expecting %s got %s.\n",
+ printf("[019] Something is wrong, check
manually. Expecting %s got %s.\n",
$next_id, $row['last_id']);
break;
}
@@ -112,6 +112,18 @@
mysqli_query($link, "UNLOCK TABLE test");
}
+ if (!$res = mysqli_query($link, "INSERT INTO test(id, label) VALUES
(1000, 'a')")) {
+ printf("[020] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
+ }
+ if (1000 !== ($tmp = mysqli_insert_id($link)))
+ printf("[021] Expecting int/1000, got %s/%s\n", gettype($tmp),
$tmp);
+
+ if (!$res = mysqli_query($link, "INSERT INTO test(label) VALUES ('b'),
('c')")) {
+ printf("[022] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
+ }
+ if (1000 >= ($tmp = mysqli_insert_id($link)))
+ printf("[023] Expecting int/>1000, got %s/%s\n", gettype($tmp),
$tmp);
+
mysqli_close($link);
var_dump(mysqli_insert_id($link));
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt
+++ php-src/ext/mysqli/tests/mysqli_fetch_assoc_zerofill.phpt
--TEST--
mysqli_fetch_assoc() - ZEROFILL
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
?>
--FILE--
<?php
require_once('connect.inc');
require_once('table.inc');
function zerofill($offset, $link, $datatype, $insert = 1) {
mysqli_query($link, 'ALTER TABLE test DROP zero');
$sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED
ZEROFILL', $datatype);
if (!mysqli_query($link, $sql)) {
// no worries - server might not support it
return true;
}
if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s',
$insert))) {
printf("[%03d] UPDATE failed, [%d] %s\n",
$offset, mysqli_errno($link),
mysqli_error($link));
return false;
}
if (!($res = mysqli_query($link, 'SELECT zero FROM test LIMIT
1'))) {
printf("[%03d] SELECT failed, [%d] %s\n",
$offset, mysqli_errno($link),
mysqli_error($link));
return false;
}
$row = mysqli_fetch_assoc($res);
$meta = mysqli_fetch_fields($res);
mysqli_free_result($res);
$meta = $meta[0];
$length = $meta->length;
if ($length > strlen($insert)) {
$expected = str_repeat('0', $length - strlen($insert));
$expected .= $insert;
if ($expected !== $row['zero']) {
printf("[%03d] Expecting '%s' got '%s'\n",
$offset, $expected, $row['zero']);
return false;
}
} else if ($length <= 1) {
printf("[%03d] Length reported is too small to run
test\n", $offset);
return false;
}
return true;
}
zerofill(2, $link, 'TINYINT');
zerofill(3, $link, 'SMALLINT');
zerofill(4, $link, 'MEDIUMINT');
zerofill(5, $link, 'INT');
zerofill(6, $link, 'INTEGER');
zerofill(7, $link, 'BIGINT');
zerofill(8, $link, 'FLOAT');
zerofill(9, $link, 'DOUBLE');
zerofill(10, $link, 'DOUBLE PRECISION');
zerofill(11, $link, 'DECIMAL');
zerofill(12, $link, 'DEC');
mysqli_close($link);
print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt
+++ php-src/ext/mysqli/tests/mysqli_stmt_bind_result_zerofill.phpt
--TEST--
mysqli_stmt_bind_result() - ZEROFILL
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
?>
--FILE--
<?php
require_once('connect.inc');
require_once('table.inc');
function zerofill($offset, $link, $datatype, $insert = 1) {
mysqli_query($link, 'ALTER TABLE test DROP zero');
$sql = sprintf('ALTER TABLE test ADD zero %s UNSIGNED
ZEROFILL', $datatype);
if (!mysqli_query($link, $sql)) {
// no worries - server might not support it
return true;
}
if (!mysqli_query($link, sprintf('UPDATE test SET zero = %s',
$insert))) {
printf("[%03d] UPDATE failed, [%d] %s\n",
$offset, mysqli_errno($link),
mysqli_error($link));
return false;
}
if (!($stmt = mysqli_prepare($link, 'SELECT zero FROM test
LIMIT 1'))) {
printf("[%03d] SELECT failed, [%d] %s\n",
$offset, mysqli_errno($link),
mysqli_error($link));
return false;
}
$result = null;
if (!mysqli_stmt_bind_result($stmt, $result)) {
printf("[%03d] Bind failed, [%d] %s\n",
mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
return false;
}
if (!mysqli_stmt_execute($stmt) || !mysqli_stmt_fetch($stmt)) {
printf("[%03d] Execute or fetch failed, [%d] %s\n",
mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
return false;
}
$res = mysqli_stmt_result_metadata($stmt);
$meta = mysqli_fetch_fields($res);
mysqli_stmt_free_result($stmt);
$meta = $meta[0];
$length = $meta->length;
if ($length > strlen($insert)) {
$expected = str_repeat('0', $length - strlen($insert));
$expected .= $insert;
if ($expected !== $result) {
printf("[%03d] Expecting '%s' got '%s'\n",
$offset, $expected, $result);
return false;
}
} else if ($length <= 1) {
printf("[%03d] Length reported is too small to run
test\n", $offset);
return false;
}
return true;
}
/*
We map those to PHP numeric types -
no padding/filling done. Neither with libmysql nor with mysqlnd.
zerofill(2, $link, 'TINYINT');
zerofill(3, $link, 'SMALLINT');
zerofill(4, $link, 'MEDIUMINT');
zerofill(5, $link, 'INT');
zerofill(6, $link, 'INTEGER');
zerofill(7, $link, 'BIGINT');
zerofill(8, $link, 'FLOAT');
zerofill(9, $link, 'DOUBLE');
zerofill(10, $link, 'DOUBLE PRECISION');
*/
zerofill(11, $link, 'DECIMAL');
zerofill(12, $link, 'DEC');
mysqli_close($link);
print "done!";
?>
--EXPECTF--
done!
http://cvs.php.net/viewvc.cgi/php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt?view=markup&rev=1.1
Index: php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt
+++ php-src/ext/mysqli/tests/mysqli_stmt_bind_param_call_user_func.phpt
--TEST--
mysqli_stmt_bind_param used with call_user_func_array() (see also bug #43568)
--SKIPIF--
<?php
require_once('skipif.inc');
require_once('skipifemb.inc');
require_once('skipifconnectfailure.inc');
// TODO remove once a decision has been made on call_user_func_array()
if (version_compare(PHP_VERSION, '5.3.0-dev') == -1)
die("skip needs PHP 5.3.0-dev+, see
http://bugs.php.net/bug.php?id=43568");
?>
--FILE--
<?php
require('connect.inc');
require('table.inc');
if (!$stmt = mysqli_stmt_init($link))
printf("[001] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[002] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = 1;
if (!mysqli_stmt_bind_param($stmt, 'i', $id) ||
!mysqli_stmt_execute($stmt))
printf("[003] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[004] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Regular, procedural, using variables\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[005] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[006] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => &$stmt,
1 => &$types,
2 => &$id
);
if (!call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[007] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[008] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[009] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for everything\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[010] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[011] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => &$types,
1 => &$id
);
if (!call_user_func_array(array($stmt, 'bind_param'), $params))
printf("[012] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[013] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[014] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, object oriented, using references for
everything\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[015] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[016] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => $types,
1 => &$id
);
if (!call_user_func_array(array($stmt, 'bind_param'), $params))
printf("[017] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[018] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[019] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, object oriented, using variable for types. using
references for bound parameter\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[020] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[021] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = 1;
$params = array(
0 => 'i',
1 => &$id
);
if (!call_user_func_array(array($stmt, 'bind_param'), $params))
printf("[022] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[023] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[024] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, object oriented, using constant for types. using
references for bound parameter\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[025] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[026] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => &$stmt,
1 => $types,
2 => &$id
);
if (!call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[027] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[028] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[029] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for everything but
using variable for types\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[025] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[026] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => $stmt,
1 => $types,
2 => &$id
);
if (!call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[027] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[028] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[029] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for bound
parameter, using variables for resource and types\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[030] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[031] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => $stmt,
1 => $types,
2 => &$id
);
if (!call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[032] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[033] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[034] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for bound
parameter, using variables for resource and types\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[035] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[036] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = 1;
$params = array(
0 => $stmt,
1 => 'i',
2 => &$id
);
if (!call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[037] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[038] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[039] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for bound
parameter, using variable for resource, using constant for types\n";
var_dump($id);
var_dump($label);
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[040] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[041] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = 1;
if (!call_user_func_array('mysqli_stmt_bind_param', array($stmt, 'i',
&$id)))
printf("[042] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[043] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = $label = null;
if (!mysqli_stmt_bind_result($stmt, $id, $label) ||
(true !== mysqli_stmt_fetch($stmt)))
printf("[044] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
print "Call user func, procedural, using references for bound
parameter, using variable for resource, using constant for types, array\n";
var_dump($id);
var_dump($label);
//
// Any of those shall fail - see also bugs.php.net/43568
//
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[045] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[046] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$id = 1;
$params = array(
0 => 'i',
1 => $id
);
if (call_user_func_array(array($stmt, 'bind_param'), $params))
printf("[047] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[048] [%d] (Message might vary with MySQL Server
version, e.g. No data supplied for parameters in prepared statement)\n",
mysqli_stmt_errno($stmt));
mysqli_stmt_close($stmt);
if (!$stmt = mysqli_stmt_init($link))
printf("[049] [%d] %s\n", mysqli_errno($link),
mysqli_error($link));
if (!mysqli_stmt_prepare($stmt, 'SELECT id, label FROM test WHERE id =
?'))
printf("[050] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
$types = 'i';
$id = 1;
$params = array(
0 => $stmt,
1 => 'i',
2 => $id
);
if (call_user_func_array('mysqli_stmt_bind_param', $params))
printf("[051] [%d] %s\n", mysqli_stmt_errno($stmt),
mysqli_stmt_error($stmt));
if (!mysqli_stmt_execute($stmt))
printf("[052] [%d] (Message might vary with MySQL Server
version, e.g. No data supplied for parameters in prepared statement)\n",
mysqli_stmt_errno($stmt));
print "done!";
?>
--EXPECTF--
Regular, procedural, using variables
int(1)
string(1) "a"
Call user func, procedural, using references for everything
int(1)
string(1) "a"
Call user func, object oriented, using references for everything
int(1)
string(1) "a"
Call user func, object oriented, using variable for types. using references for
bound parameter
int(1)
string(1) "a"
Call user func, object oriented, using constant for types. using references for
bound parameter
int(1)
string(1) "a"
Call user func, procedural, using references for everything but using variable
for types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using
variables for resource and types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using
variables for resource and types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using
variable for resource, using constant for types
int(1)
string(1) "a"
Call user func, procedural, using references for bound parameter, using
variable for resource, using constant for types, array
int(1)
string(1) "a"
[048] [2031] (Message might vary with MySQL Server version, e.g. No data
supplied for parameters in prepared statement)
[052] [2031] (Message might vary with MySQL Server version, e.g. No data
supplied for parameters in prepared statement)
done!
--UEXPECTF--
Regular, procedural, using variables
int(1)
unicode(1) "a"
Call user func, procedural, using references for everything
int(1)
unicode(1) "a"
Call user func, object oriented, using references for everything
int(1)
unicode(1) "a"
Call user func, object oriented, using variable for types. using references for
bound parameter
int(1)
unicode(1) "a"
Call user func, object oriented, using constant for types. using references for
bound parameter
int(1)
unicode(1) "a"
Call user func, procedural, using references for everything but using variable
for types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using
variables for resource and types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using
variables for resource and types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using
variable for resource, using constant for types
int(1)
unicode(1) "a"
Call user func, procedural, using references for bound parameter, using
variable for resource, using constant for types, array
int(1)
unicode(1) "a"
[048] [2031] (Message might vary with MySQL Server version, e.g. No data
supplied for parameters in prepared statement)
[052] [2031] (Message might vary with MySQL Server version, e.g. No data
supplied for parameters in prepared statement)
done!
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php