0

I am changing mysqli connections to prepared statements, I always come across this issue, when I am putting values in an array, I'm wondering if someone could explain why I do this incorrectly every time. When I print the returned array from the function it only shows me the last stored values in the array, as opposed to every row in the array.

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;
}
0

1 Answer 1

1

You're reseting $resultArray in each loop. You can create a new array $results = array(); and push $resultArray to it in each loop. Try :

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;
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.