Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between the mysqli functions bind_result, store_result and fetch?

I'm running into problems knowing when and what to call after mysqli_stmt_execute
How do you know when to call

  1. mysqli_stmt_bind_result
  2. mysqli_stmt_store_result
  3. mysqli_stmt_fetch
like image 782
Celeritas Avatar asked Jun 13 '13 19:06

Celeritas


People also ask

What is mysqli_ stmt_ store_ result?

The mysqli_stmt_store_result() function accepts a statement object as a parameter and stores the resultset of the given statement locally, if it executes a SELECT, SHOW or, DESCRIBE statement.

What does bind_ result do?

Binds columns in the result set to variables. When mysqli_stmt_fetch() is called to fetch data, the MySQL client/server protocol places the data for the bound columns into the specified variables var / vars . A column can be bound or rebound at any time, even after a result set has been partially retrieved.


1 Answers

mysqli_stmt_bind_result() tells mysqli which variable you want to be populate when you fetch a row, but it doesn't fetch() anything yet. This is necessary to call once, before you call fetch.

mysqli_stmt_store_result() sets an optional behavior so that the client downloads all rows when you fetch() the first row, and caches the whole result set in the client (i.e. PHP). Subsequent fetch() calls will simply iterate over this client-cached result set. But setting this option itself does not cause a fetch() yet either. This function is totally optional.

mysqli_stmt_fetch() returns the next row in the result set, and causes it to be stored in a bound variable. You must call this function in a loop, for each row of the result set. That is, until the fetch returns false.

like image 138
Bill Karwin Avatar answered Sep 18 '22 12:09

Bill Karwin