Re: Mysqli bind_param and error exceptions
| From: | Craig Francis | Date: | Wed, 27 Jan 2021 17:42:59 +0000 |
| Subject: | Re: Mysqli bind_param and error exceptions | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-113010@lists.php.net to get a copy of this message | ||
On Wed, 30 Dec 2020 at 18:33, Kamil Tekiela <tekiela246@gmail.com> wrote:
> [...] I have written an RFC which explains all my ideas.
> https://wiki.php.net/rfc/improve_mysqli
Hi Kamil,
As there is a discussion about MySQLi raising exceptions, and you're
looking at the general mysqli API...
When using mysqli_stmt::bind_param(), it won't raise an exception when
the number of variables doesn't match the number of parameters, instead
it's a Fatal Error:
$statement = $db->prepare('SELECT * FROM user WHERE id = ?');
$statement->bind_param('ii', $id, $id);
So database abstractions need to do messy things like:
if (count($ref_values) != $statement->param_count) {
throw new mysqli_sql_exception('Invalid parameter count', 2034);
} else {
array_unshift($ref_values, $ref_types);
call_user_func_array([$statement, 'bind_param'], $ref_values);
}
Should mysqli_stmt::bind_param() be updated to raise an exception instead?
Or, because it's such a broken function (e.g. passing variables by
reference, and the annoying $types string), should we just forget about it,
and focus on getting mysqli_stmt::execute() to accept an array of
parameters?
Craig
On Wed, 30 Dec 2020 at 18:33, Kamil Tekiela <tekiela246@gmail.com> wrote:
> Hi Internals,
>
> I would like to start a discussion about possible improvements to the
> mysqli API. I have written an RFC which explains all my ideas.
>
> https://wiki.php.net/rfc/improve_mysqli
>
> As the RFC is nothing more than a concept at the moment I am looking
> for some feedback. I attempted to implement some of the changes myself
> but due to my limited experience with C and PHP internals I didn't get
> far. I would appreciate if some volunteer would like to help me to
> implement the changes once they are ironed out.
>
> I understand that the RFC will need to be split up before voting.
>
> Kind regards,
> Kamil Tekiela
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: https://www.php.net/unsub.php
>
>