| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
- | Authors: Stig Sæther Bakken <ssb@php.net> |
+ | Authors: Stig Sæther Bakken <ssb@php.net> |
| Thies C. Arntzen <thies@thieso.net> |
| |
| Collection support by Andy Sautins <asautins@veripost.net> |
}
if (callback) {
+#if PHP_MAJOR_VERSION > 7 || (PHP_MAJOR_VERSION == 7 && PHP_MINOR_VERSION >= 2)
+ if (!zend_is_callable(callback, 0, 0)) {
+ callback_name = zend_get_callable_name(callback);
+ php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(callback_name));
+ zend_string_release(callback_name);
+ RETURN_FALSE;
+ }
+#else
if (!zend_is_callable(callback, 0, &callback_name)) {
php_error_docref(NULL, E_WARNING, "function '%s' is not callable", ZSTR_VAL(callback_name));
zend_string_release(callback_name);
RETURN_FALSE;
}
-
zend_string_release(callback_name);
+#endif
}
PHP_OCI_ZVAL_TO_CONNECTION(z_connection, connection);
---TEST--\r
-Bug #72524 (Binding null values triggers ORA-24816 error)\r
---SKIPIF--\r
-<?php\r
-$target_dbs = array('oracledb' => true, 'timesten' => true); // test runs on these DBs\r
-require(dirname(__FILE__).'/skipif.inc');\r
-?>\r
---FILE--\r
-\r
-<?php\r
-\r
-require(dirname(__FILE__).'/connect.inc');\r
-\r
-// Initialize\r
-\r
-$stmtarray = array(\r
- "CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"\r
-);\r
-\r
-oci8_test_sql_execute($c, $stmtarray);\r
-\r
-// Run test\r
-\r
-$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";\r
-\r
-echo "Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default\n";\r
-$stmt = oci_parse($c, $sql);\r
-\r
-$clob = NULL;\r
-$varchar2 = NULL;\r
-oci_bind_by_name($stmt, ':clob_col', $clob);\r
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2);\r
-\r
-var_dump(oci_execute($stmt));\r
-\r
-echo "Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default\n";\r
-\r
-$clob = '';\r
-$varchar2 = '';\r
-oci_bind_by_name($stmt, ':clob_col', $clob);\r
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2);\r
-\r
-var_dump(oci_execute($stmt));\r
-\r
-echo "Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default\n";\r
-$clob = 'abc';\r
-$varchar2 = 'abc';\r
-oci_bind_by_name($stmt, ':clob_col', $clob, 0);\r
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);\r
-\r
-var_dump(oci_execute($stmt));\r
-\r
-echo "Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default\n";\r
-$clob = NULL;\r
-$varchar2 = NULL;\r
-oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);\r
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);\r
-\r
-var_dump(oci_execute($stmt));\r
-\r
-echo "Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default\n";\r
-$clob = NULL;\r
-$varchar2 = NULL;\r
-oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);\r
-oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);\r
-\r
-\r
-var_dump(oci_execute($stmt));\r
-\r
-// Cleanup\r
-\r
-$stmtarray = array(\r
- "DROP TABLE mytable"\r
-);\r
-\r
-oci8_test_sql_execute($c, $stmtarray);\r
-\r
-?>\r
-===DONE===\r
-<?php exit(0); ?>\r
---EXPECTF--\r
-Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default\r
-bool(true)\r
-Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default\r
-bool(true)\r
-Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default\r
-bool(true)\r
-Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default\r
-\r
-Warning: oci_execute(): ORA-24816: %s in %s on line %d\r
-bool(false)\r
-Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default\r
-\r
-Warning: oci_execute(): ORA-24816: %s in %s on line %d\r
-bool(false)\r
-===DONE===\r
+--TEST--
+Bug #72524 (Binding null values triggers ORA-24816 error)
+--SKIPIF--
+<?php
+$target_dbs = array('oracledb' => true, 'timesten' => true); // test runs on these DBs
+require(dirname(__FILE__).'/skipif.inc');
+?>
+--FILE--
+
+<?php
+
+require(dirname(__FILE__).'/connect.inc');
+
+// Initialize
+
+$stmtarray = array(
+ "CREATE TABLE mytable (clob_col CLOB DEFAULT NULL, varchar2_col VARCHAR2(255) DEFAULT NULL)"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+// Run test
+
+$sql = "INSERT INTO mytable VALUES (:clob_col, :varchar2_col)";
+
+echo "Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default\n";
+$stmt = oci_parse($c, $sql);
+
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default\n";
+
+$clob = '';
+$varchar2 = '';
+oci_bind_by_name($stmt, ':clob_col', $clob);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default\n";
+$clob = 'abc';
+$varchar2 = 'abc';
+oci_bind_by_name($stmt, ':clob_col', $clob, 0);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default\n";
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob, -1, SQLT_LNG);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, -1, SQLT_LNG);
+
+var_dump(oci_execute($stmt));
+
+echo "Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default\n";
+$clob = NULL;
+$varchar2 = NULL;
+oci_bind_by_name($stmt, ':clob_col', $clob, 0, SQLT_LNG);
+oci_bind_by_name($stmt, ':varchar2_col', $varchar2, 0, SQLT_LNG);
+
+
+var_dump(oci_execute($stmt));
+
+// Cleanup
+
+$stmtarray = array(
+ "DROP TABLE mytable"
+);
+
+oci8_test_sql_execute($c, $stmtarray);
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Test 1 - P1 Value: NULL P1 Length: Default P1 Type: Default P2 Value: NULL P2 Length: Default P2 Type: Default
+bool(true)
+Test 2 - P1 Value: '' P1 Length: Default P1 Type: Default P2 Value: '' P2 Length: Default P2 Type: Default
+bool(true)
+Test 3 - P1 Value: 'abc' P1 Length: 0 P1 Type: Default P2 Value: '' P2 Length: 0 P2 Type: Default
+bool(true)
+Test 4 - P1 Value: NULL P1 Length: -1 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: -1 P2 Type:Default
+
+Warning: oci_execute(): ORA-24816: %s in %s on line %d
+bool(false)
+Test 5 - P1 Value: NULL P1 Length: 0 P1 Type: SQLT_LNG P2 Value: NULL P2 Length: 0 P2 Type:Default
+
+Warning: oci_execute(): ORA-24816: %s in %s on line %d
+bool(false)
+===DONE===