Сначала я запрашиваю базу данных, чтобы получить все записи, связанные с определенным идентификатором пользователя, затем мне нужно войти и изменить массив, потому что одно из полей - это идентификатор, и мне нужно имя, связанное с этим идентификатором.
Так что я использую columnCount, чтобы перебрать итоговый массив по индексу id и заменить его на правильное имя, которое отлично работает для первых шести результатов. Параметр columnCount возвращает только 6, но первые шесть переименовываются, как и должно быть. Но вне этого он берет результаты этого pdostatement и заполняет таблицу обычным способом, со всеми соответствующими данными, 17 строками прямо сейчас.
Почему возвращается 6, или что я делаю, чтобы получить неправильный счетчик столбцов?
global $__CMS_CONN__;
$timeqry = 'SELECT facility_id, program, date, visit_length, mileage, served FROM timesheet_db WHERE volunteer_id = '.$_SESSION['user_id'];
$stmt = $__CMS_CONN__->prepare($timeqry);
$stmt->execute();
$columns = $stmt->columnCount();
print $columns;
if($stmt)
{
$arrValues = $stmt->fetchAll(PDO::FETCH_ASSOC);
for($x=0;$x<$stmt->columnCount();$x++)
{
global $__CMS_CONN__;
$qry = 'SELECT facility FROM facility_db WHERE id = '.$arrValues[$x]['facility_id'];
$stmt1 = $__CMS_CONN__->prepare($qry);
$stmt1->execute();
if($stmt1)
{
$facilityName = $stmt1->fetchAll(PDO::FETCH_ASSOC);
foreach ($facilityName as $item)
{
foreach ($item as $key => $val)
{
$arrValues[$x]['facility_id'] = $val;
}
}
}
}
print "<table style=\"font-size:90%\">\n";
print "<tr>\n";
print "<th style=\"width:100%\">Facility</th>";
print "<th>Program</th>";
print "<th>Date</th>";
print "<th>Visit Length</th>";
print "<th>Mileage</th>";
print "<th>Served</th>";
print "</tr>";
foreach ($arrValues as $row)
{
print "<tr>";
foreach ($row as $key => $val)
{
print "<td>$val</td>";
}
print "</tr>\n";
}
print "</table>\n";
}