云SQL使用mysqli错误


Cloud SQL using mysqli error

我正试图使用带有mysqli连接的Google Cloud SQL输出一个简单查询的结果。我已经正确地设置了一个Cloud SQL实例并导入了一个SQL数据库。然而,当我运行我的应用程序时,它似乎连接到了数据库——没有触发任何错误——但日志显示如下:

PHP Fatal error:  Wrong SQL: SELECT * FROM students Error: No database selected in /base/data/home/apps/s~db-php-001/1.371796924944999585/main.php on line 18

这是我的代码:

$conn = new mysqli(null,"root","",null,null,"/cloudsql/db-php-001:db-instance-001");
// check connection
if($conn->connect_error) {
    trigger_error('Database connection failed: '  . $conn->connect_error, E_USER_ERROR);
}
$sql='SELECT * FROM students';
$rs=$conn->query($sql);
if($rs === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
} else {
  $rows_returned = $rs->num_rows;
}

很明显,我触发了那个错误,但我不知道为什么。数据库中肯定有一个名为students的表。

有人有什么想法吗?

谢谢!!Joe

您已将数据库名称设置为null。连接方式如下:

$mysqli = new mysqli("localhost", "user", "password", "database");

mysqli构造函数可以接受以下参数(按此顺序):

$mysqli = mysqli($hostname, $username, $password, $database, $port, $socket);

在您的情况下,您已将参数设置为:

$hostname = null; //Defaults to mysqli.default_host
$username = "root";
$password = "";
$database = null; //Defaults to "" 
$port = null; //Defaults to mysqli.default_port
$socket = "/cloudsql/db-php-001:db-instance-001";

为了澄清,可以为数据库名称传递null。在查询中,您需要使用完全限定的表名(在您的情况下为<database>.Students)。或者可以使用mysqli_select_db()函数来选择要使用的数据库。