将查询结果存储在数组中 - 出了什么问题?

时间:2013-11-27 09:33:18

标签: php mysql arrays

我有一个问题:

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);

结果如下:

14    15    21    30

$totalRows_Holidays = 4

如果我添加:(为了得到一个数组)

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

我得到结果:

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

14岁在哪里?

5 个答案:

答案 0 :(得分:4)

执行mysql_fetch_assoc($Holidays)时,如果在while循环之前执行此行,则会恢复一行,然后第一行(14)将被转义。

首先删除此mysql_fetch_assoc,一切正常。

并且不使用mysql_*函数,不推荐使用它们,将来不会包含这些函数,使用PDOmysqli_*函数

PS:也许这是评论,但我没有许可

答案 1 :(得分:2)

第一次来电时

 $row_Holidays = mysql_fetch_assoc($Holidays);

您实际上正在跳过第一行。因此,生成的代码应该是

 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);

好的,现在你开始工作,请考虑使用mysqli_ functions !! :)

答案 2 :(得分:1)

尝试这个

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

答案 3 :(得分:1)

替换

中的所有内容

$row_Holidays = mysql_fetch_assoc($Holidays);


$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);

第一行是14号召唤的地方。使用我的代码解决了这个问题。


希望这个答案有所帮助。

答案 4 :(得分:1)

试试这个......

    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);