回答
エラーとしてはmysqli_result::fetch_all()が使えないという事なので、
ソースコードを修正して
mysqli_result::fetch_assoc
を使う様にすれば解決できます。(参照ページのサンプルコードを読んで試してみてください、)
多分こんな感じだと思います。エラーチェックはしてないので、間違ってるかもしれませんが。
PHP
1 if ( $res ) {
2 $message_array = $res -> fetch_all ( MYSQLI_ASSOC ) ;
3 }
↓
PHP
1 if ( $res ) {
2 while ( $row = $res -> fetch_assoc ( ) ) {
3 $message_array [ ] = $row ;
4 }
5 }
原因
xfreeのPHP・MySQLサーバーではmysqlndが存在しない様に見えるので、
ソースコード修正無しではおそらく解決する方法はありません。
使えるPHPのバージョンも古い(セキュリティ上問題が有り得るバージョン)ですし、ちゃんと使いたければ有料のプランを使ってくださいという方針なんだと思います。
(サポートに問い合わせてみてください。)
以下、xfreeのPHP・MySQLサーバーでアカウントを作成して確認してみました。
Mac上でも動くはずなので、双方で動かしてみて違いを確認してみてください。
PHP
1 echo "<pre>" ;
2 //mysqli_resultクラスのメソッド一覧を表示
3 var_dump ( get_class_methods ( 'mysqli_result' ) ) ;
4
5 //iniの設定値を取得して、mysqlを含んでいる物だけ表示
6 foreach ( ini_get_all ( ) as $index => $ini ) {
7 if ( strpos ( $index , "mysql" ) !== false ) {
8 var_dump ( $index ) ;
9 var_dump ( $ini ) ;
10 }
11 }
12 //読み込んでいるエクステンションを取得して、mysqlを含んでいるものを表示
13 foreach ( get_loaded_extensions ( ) as $extension ) {
14 if ( strpos ( $extension , "mysql" ) !== false ) {
15 var_dump ( $extension ) ;
16 }
17 }
18 echo "</pre>" ;
19
array(13) {
[0]=>
string(11) "__construct"
[1]=>
string(5) "close"
[2]=>
string(4) "free"
[3]=>
string(9) "data_seek"
[4]=>
string(11) "fetch_field"
[5]=>
string(12) "fetch_fields"
[6]=>
string(18) "fetch_field_direct"
[7]=>
string(11) "fetch_array"
[8]=>
string(11) "fetch_assoc"
[9]=>
string(12) "fetch_object"
[10]=>
string(9) "fetch_row"
[11]=>
string(10) "field_seek"
[12]=>
string(11) "free_result"
}
string(25) "mysqli.allow_local_infile"
array(3) {
["global_value"]=>
string(1) "1"
["local_value"]=>
string(1) "1"
["access"]=>
int(4)
}
string(23) "mysqli.allow_persistent"
array(3) {
["global_value"]=>
string(1) "1"
["local_value"]=>
string(1) "1"
["access"]=>
int(4)
}
string(19) "mysqli.default_host"
array(3) {
["global_value"]=>
NULL
["local_value"]=>
NULL
["access"]=>
int(7)
}
string(19) "mysqli.default_port"
array(3) {
["global_value"]=>
string(4) "3306"
["local_value"]=>
string(4) "3306"
["access"]=>
int(7)
}
string(17) "mysqli.default_pw"
array(3) {
["global_value"]=>
NULL
["local_value"]=>
NULL
["access"]=>
int(7)
}
string(21) "mysqli.default_socket"
array(3) {
["global_value"]=>
NULL
["local_value"]=>
NULL
["access"]=>
int(7)
}
string(19) "mysqli.default_user"
array(3) {
["global_value"]=>
NULL
["local_value"]=>
NULL
["access"]=>
int(7)
}
string(16) "mysqli.max_links"
array(3) {
["global_value"]=>
string(2) "-1"
["local_value"]=>
string(2) "-1"
["access"]=>
int(4)
}
string(21) "mysqli.max_persistent"
array(3) {
["global_value"]=>
string(2) "-1"
["local_value"]=>
string(2) "-1"
["access"]=>
int(4)
}
string(16) "mysqli.reconnect"
array(3) {
["global_value"]=>
string(1) "0"
["local_value"]=>
string(1) "0"
["access"]=>
int(4)
}
string(31) "mysqli.rollback_on_cached_plink"
array(3) {
["global_value"]=>
string(1) "0"
["local_value"]=>
string(1) "0"
["access"]=>
int(4)
}
string(24) "pdo_mysql.default_socket"
array(3) {
["global_value"]=>
string(25) "/var/lib/mysql/mysql.sock"
["local_value"]=>
string(25) "/var/lib/mysql/mysql.sock"
["access"]=>
int(4)
}
string(6) "mysqli"
string(9) "pdo_mysql"
以下、追記前の回答
可能性としては
tdomyさんの回答の通り、mysqlndが有効になっていない
→mysqlndを有効にする
→PHPのバージョンを5.3以上に上げる
のどちらかと思います。
現状はPHPの環境情報が不明なので
回答者が再現できる粒度で、どのOSにどの様にPHPを導入したのかを質問に追記する、レンタルサーバーならサービス名、プラン等出来る限り詳細に記載する
<?php phpinfo();
だけを記載したPHPファイルをアップロードしてブラウザでアクセスし、mysqlと記載のある部分を質問に追記する
ことでより適切な回答が得られるかと思います。
以下は回答ではありませんが、、、
今から学習するのであれば、よほど明確な目的(使おうとしているアプリケーションがmysqli
を使っている、業務で保守しないといけないアプリケーションがmysqli
を使っている等)の理由が無い限りはPDO を使用したデータベースアクセスで学習されることを強くお勧めします。