Reputation: 161
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
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
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
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
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
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