所以我遇到的问题是我有一个通过PHP填充的select字段。查询MySQL数据库,PHP处理返回的数组,将其打印到选择字段的选项中。
但是,当从DB返回单个结果时,仅显示字符串的第一个字符。如果返回多个结果,则所有结果将完全显示。我已经检查过,当返回一个结果时,字符串本身是正确的,它是,所以我不相信这是数据检索的问题。此外,也没有产生错误,因此没有提供关于出错的地方的线索。
我试图找到描述此问题的其他StackOverflow帖子,但没有找到任何内容,也无法在互联网上找到任何其他内容。
这是收集结果的数据库存储过程:
BEGIN
SELECT BranchID, City FROM Branch;
END
然后这个PHP将该数据转换为关联数组:
$result = $currentconnection->DBQuery("CALL Fetch_Branch_City_All()");
if( !$result) die($mysql->error);
while($row = $result->fetch_assoc()){
$BranchID = $row["BranchID"];
$CityName = $row["City"];
$results = $this->array_push_assoc($results, 'BranchID', $BranchID);
$results = $this->array_push_assoc($results, 'CityName', $CityName);
}
这是一段中间的代码,它通过$ Query变量调用上面的函数并使其可用于下面的代码。
$Query = $pModel->fetchBranchCity();
最后,这段代码从数组数据中创建了选择:
<?php //Note if only one branch in system, displays single character
extract($Query, EXTR_OVERWRITE);
for ($a = 0; $a < count($BranchID); ++$a) {
if($BranchID[$a] == $BranchIDText){ ?>
<option value="<?=$BranchID[$a]?>" selected="selected"> <?=$CityName[$a]?> </option>
<?php }else{ ?>
<option value="<?=$BranchID[$a]?>"> <?=$CityName[$a]?> </option>
<?php }
}
?>
答案 0 :(得分:1)
它与提取有关,而$ result总是一个数组,$ BranchID和$ CityName并不总是。
因此,当它们有一个值时,它们不是数组,只是字符串并循环遍历它们从数组中提取字符而不是整个字符串。
如果您需要在代码中处理此异常的帮助,请告诉我。
提示:is_array