基本上我正在部署一个具有注册和登录功能的简单网站。 我已部署到 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 就太好了。
//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/