Tutorial :mysqli_fetch_array returning less results than expected



Question:

I'm using the code below to return and echo an array. If I define ' mysqli_fetch_array($results, MYSQLI_BOTH) ' then my array is truncated by one result. The 1st result in the array drops off the list. If I remove the MYSQLI_BOTH then I get the results that I expect, but my hosting company (Dreamhost) throws this error:

Warning: mysqli_fetch_array() [function.mysqli-fetch-array]: The result type should be either MYSQLI_NUM, MYSQLI_ASSOC or MYSQLI_BOTH in /blah/blah/blah.co.uk/index.php on line 14

what I really want is to use mysqli_fetch_array($results, 0) so that I catch all of the results, but do not get this error message.

Thanks for any and all help.

CODE:

$dbc = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die('This is the die connect error');

$query = "SELECT DISTINCT continent FROM tour";    $result = mysqli_query($dbc, $query) or die('This is the die query error');    $row = mysqli_fetch_array($result, MYSQLI_BOTH); // was ($result, 0) to start at 0, now in error, starts at 1 missing results    while($row = mysqli_fetch_array($result)) {        echo '<a href="country.php?continent=' . $row['continent'] . '">' . $row['continent'] . "</a><br />\n";       }    mysqli_close($dbc);  


Solution:1

The difference in those parameters is only in how the array will be defined.

MYSQLI_NUM = Array items will use a numerical index key.
MYSQLI_ASSOC = Array items will use the column name as an index key.
MYSQLI_BOTH = Array items will be duplicated, with one having a numerical index key and one having the column name as an index key.

You're not losing results.

You are however fetching twice before outputting, which meant you were skipping a row... do it like this:

$query = "SELECT DISTINCT continent FROM tour";     $result = mysqli_query($dbc, $query) or die('This is the die query error');     while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {         echo '<a href="country.php?continent=' . $row['continent'] . '">' . $row['continent'] . "</a><br />\n";        }     mysqli_close($dbc);   

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »