格式化PHP记录集中的信息并将其设置为数组
我正在尝试使用一个管理器类来获取查询结果,并对信息片段进行格式化,这样我就不必在视图中使用逻辑。我在谷歌上搜索了许多解决方案,并认为这是可行的,但我的Key=>值数组返回为空。有人能看看我做错了什么吗?谢谢 我已验证$results包含我试图格式化并放回数组中的值格式化PHP记录集中的信息并将其设置为数组,php,Php,我正在尝试使用一个管理器类来获取查询结果,并对信息片段进行格式化,这样我就不必在视图中使用逻辑。我在谷歌上搜索了许多解决方案,并认为这是可行的,但我的Key=>值数组返回为空。有人能看看我做错了什么吗?谢谢 我已验证$results包含我试图格式化并放回数组中的值 while($row = mysqli_fetch_array($results)){ $pets[$row['petID']] = $row['petID']; $pets[$row['chipID']]=$row[
while($row = mysqli_fetch_array($results)){
$pets[$row['petID']] = $row['petID'];
$pets[$row['chipID']]=$row['chipID'];
$pets[$row['adoptionDate']]=Date($row['adoptionDate'],'m-d-Y');
$pets[$row['pType']]=$row['pType'];
$pets[$row['breedName2']]=$row['breedName2'];
$pets[$row['breedName1']]=$row['breedName1'];
$pets[$row['imageName']]=$row['imageName'];
$pets[$row['intakeDate']]= Date($row['intakeDate'],'m-d-Y');
$pets[$row['status']]=$row['status'];
$pets[$row['age']]=$row['age'];
$pets[$row['ageText']]= $this->getAge($row['age']);
$pets[$row['gender']]=$row['gender'];
$pets[$row['genderText']] = $this->getGender($row['gender']);
$pets[$row['breed2']]=$row['breed2'];
$pets[$row['breed']]=$row['breed'];
$pets[$row['petType']]=$row['petType'];
$pets[$row['petName']]=$row['petName'];
$pets[$row['customID']]=$row['customID'];
}
以下是不返回任何内容的完整函数:
public function getPets($cond,$orgID){
$pets = array();
$pg = new petsGateway();
$results = $pg->listByQuery($cond, $orgID);
while($row = mysqli_fetch_array($results)){
$pets[$row['petID']] = $row['petID'];
$pets[$row['chipID']]=$row['chipID'];
$pets[$row['adoptionDate']]=Date($row['adoptionDate'],'m-d-Y');
$pets[$row['pType']]=$row['pType'];
$pets[$row['breedName2']]=$row['breedName2'];
$pets[$row['breedName1']]=$row['breedName1'];
$pets[$row['imageName']]= $this->getImageURL($row['imageName']);
$pets[$row['intakeDate']]= Date($row['intakeDate'],'m-d-Y');
$pets[$row['status']]=$row['status'];
$pets[$row['age']]=$row['age'];
$pets[$row['ageText']]= $this->getAge($row['age']);
$pets[$row['gender']]=$row['gender'];
$pets[$row['genderText']] = $this->getGender($row['gender']);
$pets[$row['breed2']]=$row['breed2'];
$pets[$row['breed']]=$row['breed'];
$pets[$row['petType']]=$row['petType'];
$pets[$row['petName']]=$row['petName'];
$pets[$row['customID']]=$row['customID'];
}
return $pets;
}
嗯。。。。我不确定你想要什么,但是你现在有了它,你的数组的键和值将是相同的,这使得它毫无用处 i、 e.宠物名
$pets['Fido']='Fido'
也许你想去掉作业左侧的$行
部分,这样你就可以完成这个任务了
while($row = mysqli_fetch_array($results))
{
$pet = Array();
$pet['petID'] = $row['petID'];
$pet['chipID'] = $row['chipID'];
$pet['adoptionDate'] = Date($row['adoptionDate'],'m-d-Y');
$pet['pType'] = $row['pType'];
$pet['breedName2'] = $row['breedName2'];
$pet['breedName1'] = $row['breedName1'];
$pet['imageName'] = $row['imageName'];
$pet['intakeDate'] = Date($row['intakeDate'],'m-d-Y');
$pet['status'] = $row['status'];
$pet['age'] = $row['age'];
$pet['ageText'] = $this->getAge($row['age']);
$pet['gender'] = $row['gender'];
$pet['genderText'] = $this->getGender($row['gender']);
$pet['breed2'] = $row['breed2'];
$pet['breed'] = $row['breed'];
$pet['petType'] = $row['petType'];
$pet['petName'] = $row['petName'];
$pet['customID'] = $row['customID'];
$pets.push($pet);
}
这将在每次循环记录时重写$pets[KEY]。你想要
$pets[]['petID'] = $row['petID'];
$pets[]['chipID'] = $row['chipID'];
诸如此类我猜,但我明白你想要的是:
while($row = mysqli_fetch_array($results)){
$pets[$row['petID']]['petID'] = $row['petID'];
$pets[$row['petID']]['chipID'] = $row['chipID'];
$pets[$row['petID']]['adoptionDate'] = Date($row['adoptionDate'],'m-d-Y');
$pets[$row['petID']]['pType'] = $row['pType'];
$pets[$row['petID']]['breedName2'] = $row['breedName2'];
$pets[$row['petID']]['breedName1'] = $row['breedName1'];
$pets[$row['petID']]['imageName'] = $row['imageName'];
$pets[$row['petID']]['intakeDate'] = Date($row['intakeDate'],'m-d-Y');
$pets[$row['petID']]['status'] = $row['status'];
$pets[$row['petID']]['age'] = $row['age'];
$pets[$row['petID']]['ageText'] = $this->getAge($row['age']);
$pets[$row['petID']]['gender'] = $row['gender'];
$pets[$row['petID']]['genderText'] = $this->getGender($row['gender']);
$pets[$row['petID']]['breed2'] = $row['breed2'];
$pets[$row['petID']]['breed'] = $row['breed'];
$pets[$row['petID']]['petType'] = $row['petType'];
$pets[$row['petID']]['petName'] = $row['petName'];
$pets[$row['petID']]['customID'] = $row['customID'];
}
这样,您就有了一个数组,其中所有的宠物ID作为第一个键,其详细信息在第二个键中。您也可以使用阵列推送。这相当于。。。重复代码。。。修改查询以获取所需的行,并且直接在数据库中设置日期格式,不是更容易吗 e、 g 然后
while($row = mysql_fetch_assoc($result)) {
$pets[] = $row;
}
谢谢我正在尝试将键设置为“”中的名称,将值设置为记录集中的匹配项。由于它们有许多行,所以也会增加它。我的目标是这样的(非常伪):第1行=petID=1,petName='Fluffy',status='Adopted',等第2行=petID=2,petName='Barker',status='Available',等第3行=petID=40,petName='Meowintons',status='Available',等等。通过删除该行,它会不会继续覆盖自己?我想这是最接近的了。我只是想用修改过的数据填充数据行。好啊那么,我是否要在页面上回显上述集合的第0行?请尝试并查看:)
print\u var($pets[0])
应打印出包含所有字段的第一个pet。虽然我也会研究Marc B提供的答案。自己尝试一些事情,直到了解发生了什么。不,我不希望它被覆盖,只需添加一个新行即可。:)就我所知,以上这些应该可以解决你的问题。关闭后}添加打印($pets)
查看结果这意味着sql没有结果。我看到你的编辑。类在函数中运行。我真的不知道这是怎么回事,所以我的帮助和输入到此为止。我建议您使用或die(mysql_error())在函数和类之外单独运行查询
查看是否有任何错误。然后查看是否有结果,然后进入函数和类。:)祝你好运谢谢你的帮助。它确实返回一个值。我想我看到问题的一部分是不理解如何在PHP中创建关联数组。我认为我的下一次编辑更接近我应该做的。我确实在函数的底部返回宠物,但它一直是空的。
while($row = mysql_fetch_assoc($result)) {
$pets[] = $row;
}