PHP在单个结果时显示字符串的第一个字符,但在多个结果时显示完整字符串

时间:2018-01-01 03:19:30

标签: php mysql

所以我遇到的问题是我有一个通过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 }
                }
                ?>

1 个答案:

答案 0 :(得分:1)

它与提取有关,而$ result总是一个数组,$ BranchID和$ CityName并不总是。

因此,当它们有一个值时,它们不是数组,只是字符串并循环遍历它们从数组中提取字符而不是整个字符串。

如果您需要在代码中处理此异常的帮助,请告诉我。

提示:is_array