そこで、共有ホスティングで次のコードを実行しようとしました。
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
echo phpversion();
$mySqlServername = "localhost";
$mySqlUsername = "auser";
$mySqlPassword = "apassword";
$mySqlDbname = "adatabase";
//Create Connection
$conn = new mysqli($mySqlServername, $mySqlUsername, $mySqlPassword, $mySqlDbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Set charset to UTF-8
if (!$conn->set_charset("utf8")) {
printf("Error loading character set utf8: %s\n", $conn->error);
exit();
}
if ($currConn = $conn->prepare("SELECT DISTINCT subject FROM topics")) {
$currConn->execute();
$result = $currConn->get_result();
$currConn->close();
/*for ($i = 0; $i < $result->num_rows; $i++) {
$array[$i] = $result->fetch_row()[0];
}*/
var_dump($result->fetch_row());
} else {
die("Statement could not be prepared!");
}
$conn->close();
そこで、次の出力が生成されます。
5.6.17致命的なエラー: 29 行目の
未定義メソッドmysqli_stmt::get_result()
の呼び出し/home/user/public_html/beta/test_mysqli_asmallorange.php
私のローカルマシンのどこで、次のような期待出力が生成されます:
5.6.11-1ubuntu3.1array(1) { [0]=> string(8) "宗教" }
私が理解している限り、問題は mysqli が mysqlnd を使用していないことです。私はテストしてphpinfo()
、関連するセクションだと思うものの写真を撮りました:
構成コマンド:
'./configure' '--exec-prefix=/usr/local/php56' '--prefix=/usr/local/php56' '--with-config-file-scan-dir=/usr/local/php56 /conf.d' '--with-libdir=lib64' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native -ttf''--enable-libxml''--enable-mbstring''--enable-pdo''--enable-soap''--enable-sockets''--enable-wddx''--enable- zip' '--with-apxs2=/usr/local/apache/bin/apxs' '--with-bz2' '--with-curl=/opt/curlssl/' '--with-freetype-dir=/ usr' '--with-gd' '--with-gettext' '--with-imap-ssl=/usr' '--with-imap=/opt/php_with_imap_client/' '--with-jpeg-dir= /usr''--with-kerberos''--with-libexpat-dir=/usr''--with-mcrypt=/opt/libmcrypt/' '--with-mhash=/opt/mhash/' '--with-mysql-sock=/var/lib/mysql/mysql.sock' '--with -mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--with-openssl-dir=/usr' '--with-openssl=/usr' '--with-pcre-regex ' '--with-pdo-mysql=共有' '--with-pdo-sqlite=共有,/usr' '--with-pdo-pgsql=共有' '--with-pgsql=共有,/usr/lib64 /pgsql' '--with-pic' '--with-png-dir=/usr' '--with-pspell' '--with-snmp' '--with-tidy' '--with-libxml- dir=/opt/xml2/' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '-- with-zlib-dir=/usr' '--enable-mysqlnd' '--enable-intl'--with-mhash=/opt/mhash/''--with-mysql-sock=/var/lib/mysql/mysql.sock''--with-mysql=/usr''--with-mysqli=/ usr/bin/mysql_config' '--with-openssl-dir=/usr' '--with-openssl=/usr' '--with-pcre-regex' '--with-pdo-mysql=shared' '- -with-pdo-sqlite=shared,/usr' '--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with-pic' '--with -png-dir=/usr' '--with-pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/' '--with-xmlrpc ' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr' '--enable- mysqlnd'' --enable-intl'--with-mhash=/opt/mhash/''--with-mysql-sock=/var/lib/mysql/mysql.sock''--with-mysql=/usr''--with-mysqli=/ usr/bin/mysql_config' '--with-openssl-dir=/usr' '--with-openssl=/usr' '--with-pcre-regex' '--with-pdo-mysql=shared' '- -with-pdo-sqlite=shared,/usr' '--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with-pic' '--with -png-dir=/usr' '--with-pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/' '--with-xmlrpc ' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr' '--enable- mysqlnd'' --enable-intl'--with-mysqli=/usr/bin/mysql_config' '--with-openssl-dir=/usr' '--with-openssl=/usr' '--with-pcre-regex' '--with-pdo -mysql=shared' '--with-pdo-sqlite=shared,/usr' '--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with -pic' '--with-png-dir=/usr' '--with-pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/ ' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/ usr' '--enable-mysqlnd' '--enable-intl'--with-mysqli=/usr/bin/mysql_config' '--with-openssl-dir=/usr' '--with-openssl=/usr' '--with-pcre-regex' '--with-pdo -mysql=shared' '--with-pdo-sqlite=shared,/usr' '--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with -pic' '--with-png-dir=/usr' '--with-pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/ ' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/ usr' '--enable-mysqlnd' '--enable-intl'--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with-pic' '--with-png-dir=/usr' '--with- pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr' '--enable-mysqlnd' '--enable-intl'--with-pdo-pgsql=shared' '--with-pgsql=shared,/usr/lib64/pgsql' '--with-pic' '--with-png-dir=/usr' '--with- pspell' '--with-snmp' '--with-tidy' '--with-libxml-dir=/opt/xml2/' '--with-xmlrpc' '--with-xpm-dir=/usr' '--with-xsl=/opt/xslt/' '--with-zlib' '--with-zlib-dir=/usr' '--enable-mysqlnd' '--enable-intl'
そこには、明らかにインストールされている mysqlnd ではなく、mysqli が 5.5.47-MariaDB を使用していることがわかります。ここのローカルマシンの同じセクション。
さまざまな PHP バージョンを選択できますが、どれも期待どおりに動作しないため、5.6.17
選択できる最新のバージョンに落ち着きました。
php.iniだけでこれを変更する方法はありますか?たとえそれが可能だとしても、それは良い考えですか?