1

我有一份各种邮政信息的清单。此数据位于名为“postal_codes”的 mysql 表中。

我想将此表的每一行添加到本地数组中以在脚本中使用。

我面临的问题是我不断收到与 while 循环中未定义变量相关的错误。

这是我到目前为止的代码:

// Get postal info and make into array
$postalCodes[] = array();
if ($stmt = $link->prepare("SELECT id, suburb, boxCode, streetCode, townName FROM postal_codes")) {

    if (!$stmt->execute())
    {
        printf("failed to execute");
    }
    if (!$stmt->bind_result($id, $suburb, $boxCode, $streetCode, $townName))
    {
        printf("failed to bind params");
    }
    if (!$stmt->store_result())
    {
        printf("failed to store result");
    }
    while ($stmt->fetch())
    {
        $postalCodes['id'] += $id;
        $postalCodes['suburb'] += $suburb;
        $postalCodes['boxCode'] += $boxCode;
        $postalCodes['streetCode'] += $streetCode;
        $postalCodes['townName'] += $townName;
    }
    $stmt->close();
}

foreach ($postalCodes as $postalCode)
{
    if ($postalCode['boxCode'] == 5850)
    {
        printf("{$postalCode['suburb']}");
    }
}

有人可以偶然发现此代码的问题,或建议我以更好的方式编写此过程的方法。

在这方面的任何帮助和见解将不胜感激,谢谢!

4

2 回答 2

3

你可以这样做:

if ($stmt = $link->prepare("SELECT id, suburb, boxCode, streetCode, townName FROM postal_codes"))
{
    $stmt->execute();
    $stmt->bind_result($id, $suburb, $boxCode, $streetCode, $townName);
    $stmt->store_result();
    while($stmt->fetch())
    {
        $postalCodes[] = array("id" => $id, "suburb" => $suburb, "boxCode" => $boxCode, "streetCode" => $streetCode, "townName" => $townName);
    }
}

我没有注意到您实际上是在 mysqli 中使用准备好的语句。我已经修改了我的答案以利用准备好的陈述。

于 2012-07-10T08:49:51.130 回答
2

“错误”可能是由您的关联数组引起的:

$postalCodes['id'] += $id;

问问自己:你$postalCodes['id']第一次调用它的价值是什么?它仍然没有定义。因此,您可以预先初始化变量,也可以通过error_reporting()关闭这种类型的警告。

编辑:数组问题

你想做这样的事情:

$postalCodes=array();
while ($stmt->fetch()) {
    $postalCodes[] = array('id' => $id,
        'suburb' => $suburb,
        'boxCode' => $boxCode,
        'streetCode' => $streetCode,
        'townName' => $townName);
}
foreach($postalCodes as $postalCode) {
    // do whatever you need to do
    // with the associative array, e.g.
    echo $postcalCode['boxCode'];
}

我认为您对 的含义感到困惑+=。如果要向数组中添加元素,请使用array[]=something.

于 2012-07-10T08:48:04.193 回答