尽管连接到数据库,mysqli查询响应仍为空

时间:2017-12-21 13:59:31

标签: php mysql mysqli google-cloud-datastore

我使用mysqli连接远程mysql db。我没有得到任何连接错误,但是当我输入测试查询时,我在控制台中的$ response变量只显示五行空格。这是我的连接代码:

        ini_set ('error_reporting', E_ALL);
        ini_set ('display_errors', '1');
        error_reporting (E_ALL|E_STRICT);

        $connection = mysqli_init();
        mysqli_options ($connection, MYSQLI_CLIENT_SSL_VERIFY_SERVER_CERT, true);

        mysqli_ssl_set($connection,'/usr/local/certs/client-key.pem',
       '/usr/local/certs/client-cert.pem', '/usr/local/certs/server-ca.pem', NULL, NULL);

        $link = mysqli_real_connect ($connection, $db['host'], 
       $db['user'],$db['password'], $db['dbName'], 3306, NULL,MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);


        if (!$link)
        {   
            die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
        } 
        else 
        {   
            $this->output->writeln($link); // this returns '1'
            $response = $connection->query('SHOW TABLES;');
            $this->output->writeln($response); // here I get blank lines 
            // even if tables exist within database


            $connection->close();
        }

注意:因为mysql远程服务器使用谷歌云我因为SSL证书而遇到连接问题。所以我发现我需要放置MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT标志以避免出现问题。这可能是一个重要问题。

1 个答案:

答案 0 :(得分:0)

在执行查询的所有情况下,都不会返回该查询的结果。 查询是否成功只返回一个句柄,用于获取该查询的结果。

所以你需要添加一些mysqli_fetch来获取结果集的每一行一次。见修改后的代码

在这种情况下,因为SHOW TABLES的结果有点不寻常,我使用fetch_array(MYSQLI_NUM)来简化处理结果,但通常你更有可能使用fetch_assoc()或{{ 1}}

fetch_object()