I encountered a problem while doing pset7. In portfolio.php, I would like to include not only the info of stocks a user own, but also his/her username and cash as well. So I wrote the following code, query both from the "users" table and "portfolios" table. But then I had this "undefined index" problem.


    // configuration

    if (isset($_SESSION["id"]))
        //user info from table user
        $user = CS50::query("SELECT username, cash FROM users WHERE id = ?", $_SESSION["id"]);
        $user["cash"] = number_format($user["cash"], $decimals = 2, $dec_point = "." , $thousands_sep = "," );

        //get info of stocks that a user owns using query()

        // render portfolio
        render("portfolio.php", ["title" => "Portfolio", "user" => $user["username"], "cash" => $user["cash"], "positions" => $positions]);

        // else render form
        render("login_form.php", ["title" => "Log In"]);


This is my portfolio.php code:

    <?= "Username: " . $user . "     Cash Available: " . $cash?>


    <?php foreach ($positions as $position): ?>

            <td><?= $position["symbol"] ?></td>
            <td><?= $position["name"] ?></td>
            <td><?= $position["shares"] ?></td>
            <td><?= $position["price"] ?></td>

    <?php endforeach ?>

When I log in, the page looks like this: enter image description here

1 Answer 1


CS50::query() always returns an array of rows, even when the result is just one row.

For that reason, you should use [0] after user to be able to access the index ["cash"], like this:


or reassign user like this:

$user = $user[0]

then you'll get to use $user["cash"] directly without the [0]

If you open the login.php file (which was written by the staff) and ctrl+F this, for example:

// first (and only) row
$row = $rows[0];

... you'll see that staff had to use $rows[0] to extract a $row from the array of rows.

If this is enough to solve your problem, please click the check mark to accept this answer and close it.

  • yes, it works :) Dec 13, 2016 at 2:25

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .