現在PHPMySQLから値を取得しようとしているのですが、値が空になってしまいます。
サーバがローカルサーバを使っているので、それが原因かなと個人的に思っているのですが、関係はあるでしょうか?
ちなみに下記のコードのSQL文をphpMyAdmin上で試してみると期待通りの結果が返ってきました。
どなたか分かる方がいればどこが違うのか教えていただきたいです。すみませんが、よろしくお願いします。

class Test{

    public function getData(){

        $mysqli = new mysqli($server, $user, $pass);

        if ($mysqli -> connect_errno) {
            echo $mysqli -> connect_error;
            exit();
        }

        $mysqli -> select_db('test');
        $mysqli -> set_charset("utf-8");

        $query = "SELECT * FROM word WHERE num = " .$this -> getNum();
        $result = $mysqli -> query($query);

        if (!$result) {
            $mysqli -> close();
            exit();
        }

        $data = array();
        while ($row = $result -> fetch_assoc()) {
            array_push($data, $row);
        }

        $result -> free();
        $mysqli -> close();

        return $data;
    }
}

$test = new Test();
$data = $test -> getData(); 

foreach ($data as $value) {
    var_dump($value['word']);
}

---追記---

結果が空になる原因が多分分かったと思います。
SELECT文でint型の値を取得すると、出力結果に?と表示されました。
そして文字列型の値を取得すると、出力結果は空でした。
なので文字コード(?)とかそういったものが原因なのではないかと思います。
仮にSELECT * FROM wordとしてデータを全て取得すると、int型の値だけ?になりました。(なぜ出力結果がハテナになるのかもわかりませんが......)
PHPの文字コードなどの設定もしてみたのですが、依然思った結果が得られていません。
どうすればよろしいでしょうか?