php - 在 Google App Engine 中连接到 Google Cloud SQL
问题描述
基本上我正在部署一个具有注册和登录功能的简单网站。我已经部署到 AppEngine 并且我的 Cloud SQL 在同一个 AppEngine 项目中。项目:http ://cc-lab4.appspot.com/register.php
我在 Cloud SQL 中创建了数据库和表,我希望我的 register.php 连接到云 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);
解决方案
没有你不能使用的具体原因mysqli_connect
。
我确实看到您的数据库用户变量是user
而不是$user
可能是一个问题。
在这里查看cloud sql 文档,您应该能够适应 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);
推荐阅读
- rust - 如何将 Trait 作为应用程序数据传递给 Actix Web?
- laravel - 为什么 Laravel jetstrem 注销 419 问题?
- html - 图像在移动设备上的卡片上出现和消失
- python - 提取的边界图像非常小
- python - 如何在numpy中将一维数组视为(1乘n)二维数组?
- javascript - Leaflet js - 访问 GeoJSON REST Api 的内存泄漏
- reactjs - 将 React 元素添加到静态网站不起作用
- python - PyTorch - 形状不匹配
- javascript - 如何将 Blob URL 转换为文件(图像文件)
- python - 如何从python中的字符串设置变量?