Hello Kamil, thanks you for your reply.
I am going to enumerate the answers.
1. `PDOStatement::clearParams` should reset the statament params (
https://github.com/php/php-src/blob/31c74aaeebf3af3c87e3981703f9f775c65600b9/ext/pdo/pdo_stmt.c#L406-L410
).
2. Recreate the prepared statement is very cost.
3. SQL engine is choosing bad the search index because I am passing a param
as string insteadof integer.
If you call `PDOStatement::execute` without params, the statement will use
the last params. Don't to clear the last params can be a problem. For
example:
```php
$pdo->bindValue("id1", 1, PDO::PARAM_INT);
$pdo->bindValue("id2", 2, PDO::PARAM_INT);
$pdo->execute(); // id1 => 1, id2 => 2
$pdo->bindValue("id2", 3, PDO::PARAM_INT);
$pdo->execute(); // id1 => 1, id2 => 3
```
If you call `$pdo->clearParams();` before of each `execute`, then it will
throw a fatal error because it won't use the previous params.
The main idea is to overwrite the `PDOStatement::execute` method, using a
custom class (`PDO::ATTR_STATEMENT_CLASS`) for bind values individually
with their types (`bindValue`), but firstly I need call `clearParams`.
El mar., 4 may. 2021 12:18, Kamil Tekiela <tekiela246@gmail.com> escribió: