Skip to content

Commit

Permalink
Update PDO parameters for named arguments.
Browse files Browse the repository at this point in the history
Closes GH-6220
  • Loading branch information
Crell authored and Girgias committed Sep 28, 2020
1 parent 99b3631 commit ea03cbe
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 39 deletions.
2 changes: 1 addition & 1 deletion Zend/tests/bug70914.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ try {
}
?>
--EXPECT--
PDOStatement::fetchObject(): Argument #1 ($class_name) must be a valid class name, %Z given
PDOStatement::fetchObject(): Argument #1 ($class) must be a valid class name, %Z given
8 changes: 4 additions & 4 deletions ext/pdo/pdo_dbh.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

class PDO
{
public function __construct(string $dsn, ?string $username = null, ?string $passwd = null, ?array $options = null) {}
public function __construct(string $dsn, ?string $username = null, ?string $password = null, ?array $options = null) {}

/** @return bool */
public function beginTransaction() {}
Expand Down Expand Up @@ -34,13 +34,13 @@ public function inTransaction() {}
public function lastInsertId(?string $name = null) {}

/** @return PDOStatement|false */
public function prepare(string $statement, array $driver_options = []) {}
public function prepare(string $query, array $driver_options = []) {}

/** @return PDOStatement|false */
public function query(string $statement, ?int $fetch_mode = null, mixed ...$fetch_mode_args) {}
public function query(string $query, ?int $fetch_mode = null, mixed ...$fetch_mode_args) {}

/** @return string|false */
public function quote(string $string, int $parameter_type = PDO::PARAM_STR) {}
public function quote(string $string, int $type = PDO::PARAM_STR) {}

/** @return bool */
public function rollBack() {}
Expand Down
10 changes: 5 additions & 5 deletions ext/pdo/pdo_dbh_arginfo.h
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: 0c7acc78768ad1fb77a09a24ebd4d4e660b350c9 */
* Stub hash: 2bee02a9952faf3f768873bafe1be9ef89086029 */

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO___construct, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, dsn, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, username, IS_STRING, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, passwd, IS_STRING, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, password, IS_STRING, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 1, "null")
ZEND_END_ARG_INFO()

Expand Down Expand Up @@ -34,19 +34,19 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_lastInsertId, 0, 0, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_prepare, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, statement, IS_STRING, 0)
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driver_options, IS_ARRAY, 0, "[]")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_query, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, statement, IS_STRING, 0)
ZEND_ARG_TYPE_INFO(0, query, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, fetch_mode, IS_LONG, 1, "null")
ZEND_ARG_VARIADIC_TYPE_INFO(0, fetch_mode_args, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDO_quote, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, parameter_type, IS_LONG, 0, "PDO::PARAM_STR")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
ZEND_END_ARG_INFO()

#define arginfo_class_PDO_rollBack arginfo_class_PDO_beginTransaction
Expand Down
18 changes: 9 additions & 9 deletions ext/pdo/pdo_stmt.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
class PDOStatement implements IteratorAggregate
{
/** @return bool */
public function bindColumn(string|int $column, mixed &$param, int $type = 0, int $maxlen = 0, mixed $driverdata = null) {}
public function bindColumn(string|int $column, mixed &$param, int $type = 0, int $max_length = 0, mixed $driver_options = null) {}

/** @return bool */
public function bindParam(string|int $parameter, mixed &$param, int $type = PDO::PARAM_STR, int $maxlen = 0, mixed $driverdata = null) {}
public function bindParam(string|int $param, mixed &$bind_var, int $type = PDO::PARAM_STR, int $max_length = 0, mixed $driver_options = null) {}

/** @return bool */
public function bindValue(string|int $parameter, mixed $value, int $type = PDO::PARAM_STR) {}
public function bindValue(string|int $param, mixed $value, int $type = PDO::PARAM_STR) {}

/** @return bool */
public function closeCursor() {}
Expand All @@ -32,22 +32,22 @@ public function errorInfo() {}
public function execute(?array $input_parameters = null) {}

/** @return mixed */
public function fetch(int $fetch_style = PDO::FETCH_BOTH, int $cursor_orientation = PDO::FETCH_ORI_NEXT, int $cursor_offset = 0) {}
public function fetch(int $mode = PDO::FETCH_BOTH, int $cursor_orientation = PDO::FETCH_ORI_NEXT, int $cursor_offset = 0) {}

/** @return array */
public function fetchAll(int $fetch_style = PDO::FETCH_BOTH, mixed ...$fetch_mode_args) {}
public function fetchAll(int $mode = PDO::FETCH_BOTH, mixed ...$args) {}

/** @return mixed */
public function fetchColumn(int $column_number = 0) {}
public function fetchColumn(int $index = 0) {}

/** @return mixed */
public function fetchObject(?string $class_name = "stdClass", ?array $ctor_args = null) {}
public function fetchObject(?string $class = "stdClass", ?array $constructor_args = null) {}

/** @return mixed */
public function getAttribute(int $attribute) {}
public function getAttribute(int $name) {}

/** @return array|false */
public function getColumnMeta(int $column) {}
public function getColumnMeta(int $index) {}

/** @return bool */
public function nextRowset() {}
Expand Down
32 changes: 16 additions & 16 deletions ext/pdo/pdo_stmt_arginfo.h
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: c12bc1c5d1e3dbd8cce67e50c974b20ec5564e67 */
* Stub hash: b3338fc077eab1280da093f059fac14dd7f19678 */

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindColumn, 0, 0, 2)
ZEND_ARG_TYPE_MASK(0, column, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_INFO(1, param, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxlen, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverdata, IS_MIXED, 0, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, max_length, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driver_options, IS_MIXED, 0, "null")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindParam, 0, 0, 2)
ZEND_ARG_TYPE_MASK(0, parameter, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_INFO(1, param, IS_MIXED, 0)
ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_INFO(1, bind_var, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, maxlen, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driverdata, IS_MIXED, 0, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, max_length, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, driver_options, IS_MIXED, 0, "null")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_bindValue, 0, 0, 2)
ZEND_ARG_TYPE_MASK(0, parameter, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_MASK(0, param, MAY_BE_STRING|MAY_BE_LONG, NULL)
ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "PDO::PARAM_STR")
ZEND_END_ARG_INFO()
Expand All @@ -39,31 +39,31 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_execute, 0, 0, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetch, 0, 0, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, fetch_style, IS_LONG, 0, "PDO::FETCH_BOTH")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PDO::FETCH_BOTH")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, cursor_orientation, IS_LONG, 0, "PDO::FETCH_ORI_NEXT")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, cursor_offset, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchAll, 0, 0, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, fetch_style, IS_LONG, 0, "PDO::FETCH_BOTH")
ZEND_ARG_VARIADIC_TYPE_INFO(0, fetch_mode_args, IS_MIXED, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, mode, IS_LONG, 0, "PDO::FETCH_BOTH")
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchColumn, 0, 0, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, column_number, IS_LONG, 0, "0")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, index, IS_LONG, 0, "0")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_fetchObject, 0, 0, 0)
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class_name, IS_STRING, 1, "\"stdClass\"")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, ctor_args, IS_ARRAY, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class, IS_STRING, 1, "\"stdClass\"")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, constructor_args, IS_ARRAY, 1, "null")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_getAttribute, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, attribute, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, name, IS_LONG, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_PDOStatement_getColumnMeta, 0, 0, 1)
ZEND_ARG_TYPE_INFO(0, column, IS_LONG, 0)
ZEND_ARG_TYPE_INFO(0, index, IS_LONG, 0)
ZEND_END_ARG_INFO()

#define arginfo_class_PDOStatement_nextRowset arginfo_class_PDOStatement_closeCursor
Expand Down
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/bug_37445.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ $stmt = $db->prepare("SELECT 1");
$stmt->bindParam(':a', 'b');
?>
--EXPECTF--
Fatal error: Uncaught Error: PDOStatement::bindParam(): Argument #2 ($param) cannot be passed by reference in %sbug_37445.php:%d
Fatal error: Uncaught Error: PDOStatement::bindParam(): Argument #2 ($bind_var) cannot be passed by reference in %sbug_37445.php:%d
Stack trace:
#0 {main}
thrown in %sbug_37445.php on line %d
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/pdo_mysql_prepare_native.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ $db = MySQLPDOTest::factory();
$db->exec('DROP TABLE IF EXISTS test');
?>
--EXPECT--
PDO::prepare(): Argument #1 ($statement) cannot be empty
PDO::prepare(): Argument #1 ($query) cannot be empty
array(1) {
[0]=>
array(1) {
Expand Down
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/pdo_mysql_stmt_fetchobject.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -111,5 +111,5 @@ object(myclass)#%d (4) {
["null"]=>
NULL
}
PDOStatement::fetchObject(): Argument #1 ($class_name) must be a valid class name, class_does_not_exist given
PDOStatement::fetchObject(): Argument #1 ($class) must be a valid class name, class_does_not_exist given
done!
2 changes: 1 addition & 1 deletion ext/pdo_mysql/tests/pdo_mysql_stmt_getcolumnmeta.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,6 @@ $db->exec('DROP TABLE IF EXISTS test');
print "done!";
?>
--EXPECT--
PDOStatement::getColumnMeta(): Argument #1 ($column) must be greater than or equal to 0
PDOStatement::getColumnMeta(): Argument #1 ($index) must be greater than or equal to 0
Testing native PS...
done!

0 comments on commit ea03cbe

Please sign in to comment.