As we determined, the problem was in your foreach
.
The way you read it is wrong, fetch
does not have associative properties, so you need to use bind_result
.
Here is the hack that is also offered in the fetch
manual :
public function selectUserInfo($id) { $stmt = $this->con->prepare("SELECT * FROM users WHERE os_id=?"); $stmt->bind_param('i', $id); if(!$stmt->execute()) { trigger_error($stmt->error, E_USER_ERROR); } else { $bindVarArray = array(); $data = array(); $result; $meta = $stmt->result_metadata(); while ($column = $meta->fetch_field()) { $columnName = str_replace(' ', '_', $column->name); $bindVarArray[] = &$result[$columnName]; } call_user_func_array(array($stmt, 'bind_result'), $bindVarArray); $index = 0; while ($stmt->fetch() != null) { foreach ($result as $k => $v) { $data[$index][$k] = $v; } $index++; } return $data; } }
Then you can use your foreach
to read it like this:
foreach ($data as $result) { echo $result['os_fname'], ' => ', $result['os_lname'], "\n"; }
And you can always use print_r
to find out how the resulting array is:
print_r($data);
source share