Php 为什么PDO声明->;columnCount没有返回正确的数字?
我首先查询数据库以获取与某个用户id关联的所有记录,然后我需要进入并修改数组,因为其中一个字段是id,我需要与该id关联的名称 因此,我使用columnCount在id的索引处迭代生成的数组,并将其替换为正确的名称,这对于前六个结果效果良好。columnCount仅返回6,但前六个将按原样重命名。但除此之外,它从PDO语句中获取结果,并使用所有相关数据填充表,目前为17行 为什么返回6,或者我怎么做才能得到错误的列数Php 为什么PDO声明->;columnCount没有返回正确的数字?,php,pdo,Php,Pdo,我首先查询数据库以获取与某个用户id关联的所有记录,然后我需要进入并修改数组,因为其中一个字段是id,我需要与该id关联的名称 因此,我使用columnCount在id的索引处迭代生成的数组,并将其替换为正确的名称,这对于前六个结果效果良好。columnCount仅返回6,但前六个将按原样重命名。但除此之外,它从PDO语句中获取结果,并使用所有相关数据填充表,目前为17行 为什么返回6,或者我怎么做才能得到错误的列数 global $__CMS_CONN__; $timeqry = 'S
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";
}
global$\uuu CMS\u CONN\uuuu;
$timeqry='选择设施id、计划、日期、就诊长度、里程,从时间表\u db中选择志愿者id='。$\u会话['user\u id'];
$stmt=$\uuu CMS\u CONN\uuuuu->prepare($timeqry);
$stmt->execute();
$columns=$stmt->columnCount();
打印$columns;
如果($stmt)
{
$arrValues=$stmt->fetchAll(PDO::FETCH_ASSOC);
对于($x=0;$xcolumnCount();$x++)
{
全球$CMS\U CONN\uuuuuuuuuu;
$qry='从facility_db中选择facility,其中id='。$arrValues[$x]['facility_id'];
$stmt1=$\u CMS\u CONN\u->准备($qry);
$stmt1->execute();
如果($stmt1)
{
$facilityName=$stmt1->fetchAll(PDO::FETCH_ASSOC);
foreach($facilityName作为$item)
{
foreach($key=>$val的项目)
{
$arrValues[$x]['facility_id']=$val;
}
}
}
}
打印“\n”;
打印“\n”;
打印“设施”;
打印“程序”;
打印“日期”;
打印“访问长度”;
打印“里程”;
打印“已送达”;
打印“”;
foreach($arr值为$row)
{
打印“”;
foreach($key=>$val的行)
{
打印“$val”;
}
打印“\n”;
}
打印“\n”;
}
您在第一个选择查询中要求六列:
SELECT facility_id, program, date, visit_length, mileage, served FROM timesheet_db WHERE volunteer_id = $_SESSION['user_id']
因此,columnCount()
自然是6。它不会将列计数乘以返回的行数或类似的数字
如果需要行数,则需要count($arrValues)
(手册中说数据库行为与SELECT
s不一致)。LOL!我真的觉得自己像个笨蛋。我想知道结果的数量returned@Ryan:这是行数
。但是,如果要迭代行,为什么不直接执行foreach($stmtas$row)
。PDO太棒了,为什么不利用它的惊人?是的,我在找rowCount,我想我需要一些咖啡什么的。谢谢你叫醒我。@nikic:我也想到了rowCount()
,但手册上说它可能不会计算使用SELECT
选择的行数,因此不应该依赖它。