php - 在 Google App Engine 中连接到 Google Cloud SQL

标签 php mysql google-app-engine mysqli google-cloud-sql

基本上我正在部署一个具有注册和登录功能的简单网站。 我已部署到 AppEngine 中,并且我的 Cloud SQL 位于同一个 AppEngine 项目中。项目:http://cc-lab4.appspot.com/register.php

我在Cloud SQL中创建了数据库和表,我希望我的register.php连接到cloud sql数据库并执行插入查询。

我真的很想使用 mysqli_connect(),因为我对此很熟悉,PDO 连接对我来说是新的。

我还不知 Prop 体的连接方式,根本没有成功过。 任何人都知道如何使用 mysqli_connect() 到 Cloud SQL 就太好了。

使用其中一个答案进行编辑后,仍然不起作用: Cloud SQL Database Instance

 //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); 

最佳答案

没有具体原因无法使用 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);

关于php - 在 Google App Engine 中连接到 Google Cloud SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416013/

相关文章:

php - 在搜索过程中使用 DOB 选择年龄组

mysql 小数点四舍五入

php - mySQL带参数查询下一个id

python - 为数据存储中存储的图像发送 "304 Not Modified"

php - 没有 JavaScript 或 Cookie 的 Google Analytics

php - 设置无密码的 PDO 连接

python - 使用 utf-8 编码后仍出现 ascii 代码错误

java - 保存 oAuth 凭据

PHP循环遍历嵌套的json数组

mysql - 如果行存在则更新,否则使用另一个表中的数据插入新记录