Mugur Ungureanu
Mugur Ungureanu

Reputation: 161

Store query result in a array - what is wrong?

I have a query:

mysql_select_db($database_dbconfig, $dbconfig);
$query_Holidays = "SELECT substring(data,9,2) AS days_holidays FROM database_holidays WHERE database_holidays.data <> ''";
$Holidays = mysql_query($query_Holidays, $dbconfig) or die(mysql_error());
$row_Holidays = mysql_fetch_assoc($Holidays);
$totalRows_Holidays = mysql_num_rows($Holidays);

Results are like this:

14    15    21    30

and

$totalRows_Holidays = 4

if I add this: (in order to get an array)

$days_calendar = array();
while ($row_Holidays = mysql_fetch_assoc($Holidays)) {
    $days_calendar[] = $row_Holidays['days_holidays'];}
print_r($days_calendar);

I get as result:

Array([0]=>15[1]=>21[2]=>30)

Where is 14?

Upvotes: 0

Views: 71

Answers (5)

Zeeshan
Zeeshan

Reputation: 1675

try this ...

    mysql_select_db($database_dbconfig, $dbconfig);
    $query_Holidays = "SELECT substring(data,9,2) AS days_holidays FROM database_holidays   WHERE database_holidays.data <> ''";
    $Holidays = mysql_query($query_Holidays, $dbconfig) or die(mysql_error());
    //$row_Holidays = mysql_fetch_assoc($Holidays);
    //$totalRows_Holidays = mysql_num_rows(Holidays);
    $days_calendar = array();
while ($row_Holidays = mysql_fetch_assoc($Holidays)) {
    $days_calendar[] = $row_Holidays['days_holidays'];}
print_r($days_calendar);

Upvotes: 1

Kneel-Before-ZOD
Kneel-Before-ZOD

Reputation: 4221

Replace everything from


$row_Holidays = mysql_fetch_assoc($Holidays);

with


$totalRows_Holidays = mysql_num_rows(Holidays);
if ($totalRows_Holidays > 0){
  while ($row_Holidays = mysql_fetch_assoc($Holidays)) {
    $days_calendar[] = $row_Holidays['days_holidays'];
  }
}
print_r($days_calendar);

That first line is where the 14 was called. Using my code resolves the issue.


Hope this answer helps.

Upvotes: 1

Suvash sarker
Suvash sarker

Reputation: 3170

try this one

  $days_calendar = array();
    while ($row_Holidays = mysql_fetch_array($Holidays)) {
        $days_calendar[] = $row_Holidays['days_holidays'];}
    print_r($days_calendar);

Upvotes: 1

So_many_options
So_many_options

Reputation: 56

When you do mysql_fetch_assoc($Holidays) you recover one row, if you are executing this before the while loop, then the first row (14) will be escaped.

Remove this first mysql_fetch_assoc and all will be ok.

And do not use mysql_* functions, they are deprecated and will not be included in future versions, use PDO or mysqli_* functions

PS: Maybe this is a comment but i don't have permission

Upvotes: 4

opalenzuela
opalenzuela

Reputation: 3171

When you call the first time

 $row_Holidays = mysql_fetch_assoc($Holidays);

You are actually skipping the first row. So, the resulting code should be

 mysql_select_db($database_dbconfig, $dbconfig);
 $query_Holidays = "SELECT substring(data,9,2) AS days_holidays 
      FROM database_holidays     
      WHERE database_holidays.data <> ''";
 $Holidays = mysql_query($query_Holidays, $dbconfig) or die(mysql_error());
 $totalRows_Holidays = mysql_num_rows(Holidays);
 $days_calendar = array();
 while ($row_Holidays = mysql_fetch_assoc($Holidays)) 
 {
     $days_calendar[] = $row_Holidays['days_holidays'];
 }
 print_r($days_calendar);

Ok, and now that you get it working, please consider using mysqli_ functions!! :)

Upvotes: 2

Related Questions