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 <tekiela...@gmail.com> escribió:

> Hi Juanra,
>
> Thanks for sharing your interest in improving PHP. Your proposal is very
> unclear at the moment. What do you think this function should do? Why can't
> you just recreate the prepared statement? What performance hit are you
> talking about?
> I don't see how such a function would be useful, but I hope you can
> explain your use case and its reasoning.
>
> Regards,
> Kamil
>

Reply via email to