Fetch the entire result set of a query and return it as an associative array using the first column as the key. The function takes care of doing the query and freeing the results when finished. If the result set contains more than two columns, the value will be an array of the values from column 2 to n. If the result set contains only two columns, the returned value will be a scalar with the value of the second column (unless forced to an array with the $force_array parameter).
the SQL query or the statement to prepare
used only if the query returns exactly two columns. If TRUE, the values of the returned array will be one-element arrays instead of scalars.
array, string or numeric data to be added to the prepared statement. Quantity of items passed must match quantity of placeholders in the prepared statement: meaning 1 placeholder for non-array parameters or 1 placeholder per array element.
If supplied, prepare()/ execute() is used.
the fetch mode to use
if TRUE, the values of the returned array is wrapped in another array. If the same key value (in the first column) repeats itself, the values will be appended to this array instead of overwriting the existing values.
Table 21-1. Possible PEAR_Error values
| Error code | Error message | Reason | Solution |
|---|---|---|---|
| DB_ERROR_INVALID | NULL | SQL statment for preparing is not valid. | See the prepare() documentation, if you want to use a SQL statemt using placeholders. |
| DB_ERROR_MISMATCH | NULL | Quantity of parameters didn't match quantity of placeholders in the prepared statment. | Check that the number of placeholders in the prepare() statement passed to $query equals the count of entries passed to $params. |
| DB_ERROR_NODBSELECTED | NULL | No database was choosen. | Check the DSN in connect(). |
| DB_ERROR_TRUNCATED | NULL | The result set contains fewer then two columns | Check the SQL query or choose another get*() function |
| every other error code | Database specific error | Check the database related section of PHP-Manual to detect the reason for this error. In the most cases a misformed SQL statment. Ie. using LIMIT in a SQL-Statment for an Oracle database. |