On Sun, Mar 28, 2021 at 6:00 PM Kamil Tekiela <tekiela...@gmail.com> wrote:

> Hi Internals,
>
> I have written a new proposal in the series of improvements to mysqli
> extension. This one aims to add a new method mysqli_result::fetch_column as
> well as its functional counterpart.
>
> https://wiki.php.net/rfc/mysqli_fetch_column
>
> The RFC is very simple, but I am looking for your opinions. I also have
> doubts about the scope. Is the scope too limited? Should it involve a
> change to fetch_all as well?
>
> On the implementation part, I wonder if it could be optimized. The one I
> have written works but doesn't look like the most efficient way to do this.
>

Looks like a reasonable addition to me.

The implementation can be optimized if mysqlnd is used. It's possible to
call mysqlnd_fetch_row_zval(), which will return the row in a flat zval
buffer, and then pick out the one result you want and destroy the rest. You
can find a sample usage in ext/mysql:
https://github.com/php/pecl-database-mysql/blob/ca514c4dfacd7f1495d2fe142101fe3d91494d12/php_mysql.c#L2103-L2112

Not sure about fetch_all() support. I think the primary use case here is
the case where you expect exactly one result (or zero/one results) and just
need the one fetch_column() call. If you have multiple results you should
be iterating the result set, not calling fetch_all()...

Regards,
Nikita

Reply via email to