-
Notifications
You must be signed in to change notification settings - Fork 3.4k
/
StatementInterface.php
211 lines (191 loc) · 6.59 KB
/
StatementInterface.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
<?php
declare(strict_types=1);
/**
* CakePHP(tm) : Rapid Development Framework (https://cakephp.org)
* Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
*
* Licensed under The MIT License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
* @link https://cakephp.org CakePHP(tm) Project
* @since 3.0.0
* @license https://opensource.org/licenses/mit-license.php MIT License
*/
namespace Cake\Database;
use PDO;
interface StatementInterface
{
/**
* Maps to PDO::FETCH_NUM.
*
* @var string
* @link https://www.php.net/manual/en/pdo.constants.php
*/
public const FETCH_TYPE_NUM = 'num';
/**
* Maps to PDO::FETCH_ASSOC.
*
* @var string
* @link https://www.php.net/manual/en/pdo.constants.php
*/
public const FETCH_TYPE_ASSOC = 'assoc';
/**
* Maps to PDO::FETCH_OBJ.
*
* @var string
* @link https://www.php.net/manual/en/pdo.constants.php
*/
public const FETCH_TYPE_OBJ = 'obj';
/**
* Assign a value to a positional or named variable in prepared query. If using
* positional variables you need to start with index one, if using named params then
* just use the name in any order.
*
* It is not allowed to combine positional and named variables in the same statement.
*
* ### Examples:
*
* ```
* $statement->bindValue(1, 'a title');
* $statement->bindValue('active', true, 'boolean');
* $statement->bindValue(5, new \DateTime(), 'date');
* ```
*
* @param string|int $column name or param position to be bound
* @param mixed $value The value to bind to variable in query
* @param string|int|null $type name of configured Type class
* @return void
*/
public function bindValue(string|int $column, mixed $value, string|int|null $type = 'string'): void;
/**
* Closes the cursor, enabling the statement to be executed again.
*
* This behaves the same as `PDOStatement::closeCursor()`.
*
* @return void
*/
public function closeCursor(): void;
/**
* Returns the number of columns in the result set.
*
* This behaves the same as `PDOStatement::columnCount()`.
*
* @return int
* @link https://php.net/manual/en/pdostatement.columncount.php
*/
public function columnCount(): int;
/**
* Fetch the SQLSTATE associated with the last operation on the statement handle.
*
* This behaves the same as `PDOStatement::errorCode()`.
*
* @return string
* @link https://www.php.net/manual/en/pdostatement.errorcode.php
*/
public function errorCode(): string;
/**
* Fetch extended error information associated with the last operation on the statement handle.
*
* This behaves the same as `PDOStatement::errorInfo()`.
*
* @return array
* @link https://www.php.net/manual/en/pdostatement.errorinfo.php
*/
public function errorInfo(): array;
/**
* Executes the statement by sending the SQL query to the database. It can optionally
* take an array or arguments to be bound to the query variables. Please note
* that binding parameters from this method will not perform any custom type conversion
* as it would normally happen when calling `bindValue`.
*
* @param array|null $params list of values to be bound to query
* @return bool true on success, false otherwise
*/
public function execute(?array $params = null): bool;
/**
* Fetches the next row from a result set
* and converts fields to types based on TypeMap.
*
* This behaves the same as `PDOStatement::fetch()`.
*
* @param string|int $mode PDO::FETCH_* constant or fetch mode name.
* Valid names are 'assoc', 'num' or 'obj'.
* @return mixed
* @throws \InvalidArgumentException
* @link https://www.php.net/manual/en/pdo.constants.php
*/
public function fetch(string|int $mode = PDO::FETCH_NUM): mixed;
/**
* Fetches the remaining rows from a result set
* and converts fields to types based on TypeMap.
*
* This behaves the same as `PDOStatement::fetchAll()`.
*
* @param string|int $mode PDO::FETCH_* constant or fetch mode name.
* Valid names are 'assoc', 'num' or 'obj'.
* @return array
* @throws \InvalidArgumentException
* @link https://www.php.net/manual/en/pdo.constants.php
*/
public function fetchAll(string|int $mode = PDO::FETCH_NUM): array;
/**
* Fetches the next row from a result set using PDO::FETCH_NUM
* and converts fields to types based on TypeMap.
*
* This behaves the same as `PDOStatement::fetch()` except only
* a specific column from the row is returned.
*
* @param int $position Column index in result row.
* @return mixed
*/
public function fetchColumn(int $position): mixed;
/**
* Fetches the next row from a result set using PDO::FETCH_ASSOC
* and converts fields to types based on TypeMap.
*
* This behaves the same as `PDOStatement::fetch()` except an
* empty array is returned instead of false.
*
* @return array
*/
public function fetchAssoc(): array;
/**
* Returns the number of rows affected by the last SQL statement.
*
* This behaves the same as `PDOStatement::rowCount()`.
*
* @return int
* @link https://www.php.net/manual/en/pdostatement.rowcount.php
*/
public function rowCount(): int;
/**
* Binds a set of values to statement object with corresponding type.
*
* @param array $params list of values to be bound
* @param array $types list of types to be used, keys should match those in $params
* @return void
*/
public function bind(array $params, array $types): void;
/**
* Returns the latest primary inserted using this statement.
*
* @param string|null $table table name or sequence to get last insert value from
* @param string|null $column the name of the column representing the primary key
* @return string|int
*/
public function lastInsertId(?string $table = null, ?string $column = null): string|int;
/**
* Returns prepared query string.
*
* @return string
*/
public function queryString(): string;
/**
* Get the bound params.
*
* @return array
*/
public function getBoundParams(): array;
}