php数组范围问题 - 从数组返回最后一行

时间:2017-11-20 19:44:10

标签: php arrays

我正在改变mysqli连接到准备好的语句,我总是遇到这个问题,当我将值放在一个数组中时,我想知道是否有人可以解释为什么我每次都这样做不正确。当我从函数中打印返回的数组时,它只显示数组中最后存储的值,而不是数组中的每一行。

function getResults($db) {
    $statement = $db->prepare("SELECT inv_id, serial_num, equip_id, equip_title, equip_cat, input_date, date_modified FROM equip_inv");

    $statement->execute();
    $statement->store_result();
    $num_of_rows = $statement->num_rows;
    $statement->bind_result($invId, $serial, $equipId, $equipTitle, $equipCat, $inputDate, $dateMod);

    while ($statement->fetch()) {
        $resultArray = array();
        $resultArray['inv_id'] = $invId;
        $resultArray['serial_num'] = $serial;
        $resultArray['equip_id'] =  $equipId;
        $resultArray['equip_title'] = $equipTitle;
        $resultArray['equip_cat'] = $equipCat;
        $resultArray['input_date'] = $inputDate;
        $resultArray['date_modified'] = $dateMod;
    }

    return $resultArray;
}

1 个答案:

答案 0 :(得分:1)

您在每个循环中重新设置$resultArray。您可以在每个循环中创建一个新数组$results = array();并将$resultArray推送到它。试试:

function getResults($db){


$statement = $db->prepare("SELECT inv_id, serial_num, equip_id, equip_title, equip_cat, input_date, date_modified FROM equip_inv");

$statement->execute();
$statement->store_result();
$num_of_rows = $statement->num_rows;
$statement->bind_result($invId, $serial, $equipId, $equipTitle, $equipCat, $inputDate, $dateMod);
$results = array();

while ($statement->fetch()){
    $resultArray = array();
    $resultArray['inv_id'] = $invId;
    $resultArray['serial_num'] = $serial;
    $resultArray['equip_id'] =  $equipId;
    $resultArray['equip_title'] = $equipTitle;
    $resultArray['equip_cat'] = $equipCat;
    $resultArray['input_date'] = $inputDate;
    $resultArray['date_modified'] = $dateMod;
    $results[] = $resultArray;
    }
    return $results;
}