基本上,我正在部署一个简单的网站,有注册和登录。我已经部署到AppEngine中,我的Cloud SQL也在同一个AppEngine项目中。项目:http://cc-lab4.appspot.com/register.php
我在Cloud SQL中创建了数据库和表,我想让我的register.php连接到cloud sql数据库并执行插入查询。
我真的很想使用mysqli_connect(),因为我对它很熟悉,PDO连接对我来说是新的。
我还不知道确切的联系方式,一点也不成功。任何知道如何使用mysqli_connect()到Cloud SQL的人都会很棒。
使用其中一个答案进行编辑后,仍然不起作用:

//Variables for Database connection
$user = "root";
$pw = "root";
$socket = '/cloudsql/'. $ENV{"cc-lab4:australia-southeast1:my-sql-artworks"};
$dbname = "artworks";
//Registration values from <Form>
$username = $_POST['username'];
$password = $_POST['password'];
//Database connection
$db = mysqli_connect(NULL, $user, $pw, $dbname, NULL, $socket);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//Table Member (id, username,password,reg_date)
$q = "insert into member values(null, '$username', SHA('$password'), now())";
mysqli_query($db, $q); 发布于 2019-10-18 02:30:48
最后,我使用PDO方法连接到了我的Cloud SQL。
$dsn = getenv('MYSQL_DSN');
$user = getenv('MYSQL_USER');
$pw = getenv('MYSQL_PASSWORD');
//Database connection
$db = new PDO($dsn, $user, $pw);
//register value from <form> inputs
$username = $_POST['username'];
$password = $_POST['password'];
//insertion success
$statement = $db->prepare("insert into member values(null, '$username', SHA('$password'), now())");
$statement->execute();我的.yaml文件配置

发布于 2019-10-16 22:59:28
没有什么特别的原因你不能使用mysqli_connect。
我确实看到您的数据库用户变量是user,而不是$user,这可能是一个问题。
看一看cloud sql documentation here,您应该能够适应PHP语法。
Node.js设置如下所示:
let pool;
const createPool = async () => {
pool = await mysql.createPool({
user: process.env.DB_USER, // e.g. 'my-db-user'
password: process.env.DB_PASS, // e.g. 'my-db-password'
database: process.env.DB_NAME, // e.g. 'my-database'
// If connecting via unix domain socket, specify the path
socketPath: `/cloudsql/${process.env.CLOUD_SQL_CONNECTION_NAME}`,
// If connecting via TCP, enter the IP and port instead
// host: 'localhost',
// port: 3306,
//...
});
};
createPool();因此,关键的观察结果是套接字的连接名称存储在环境变量中。
您的PHP可能如下所示:
$user = "whatever_user";
$password = "whatever_password";
$dbname = "whatever_database";
$socket = '/cloudsql/'.$ENV{"CLOUD_SQL_CONNECTION_NAME"};
$database = mysqli_connect(NULL, $user, $password, $dbname, NULL, $socket);发布于 2019-10-16 22:58:10
要将您的App Engine连接到您的Cloud SQL实例,您只需在App.yaml文件中指定您的Cloud SQL实例的用户名、密码和域名,示例如下:
# Use the PHP 7.3 runtime (BETA) by replacing "php72" below with "php73"
runtime: php72
env_variables:
# Replace USER, PASSWORD, DATABASE, and CONNECTION_NAME with the
# values obtained when configuring your Cloud SQL instance.
CLOUDSQL_USER:
CLOUDSQL_PASSWORD:
CLOUDSQL_DSN: "mysql:dbname=DATABASE;unix_socket=/cloudsql/CONNECTION_NAME"有关更多信息,您可以查看php中App Engine的quickstart guide
https://stackoverflow.com/questions/58416013
复制相似问题