php - gcloud PHP没有连接到sql
问题描述
我正在尝试在 gcloud 上设置一个 PHP 文件和 MySQL 服务器,以供具有板载 HTML/JS/CSS 的 IoT 设备使用,但我无法让我的 PHP(在应用程序引擎上)正确连接到 MySQL。(我对 gcloud 很陌生)
我有一些代码来检查连接错误,但它不会抛出任何错误,即使我传递了错误的密码。
这是我的 PHP,它应该建立连接并插入一些测试数据,但我总是得到“插入数据时出错...”回显,并带有空白 $mysqli-> 错误。
<?php
$host = getenv("MYSQL_HOST");
$user = getenv("MYSQL_USER");
$pass = getenv("MYSQL_PASSWORD");
$db = getenv("MYSQL_DB");
$port = getenv("MYSQL_PORT");
$socket = getenv("MYSQL_SOCKET");
$mysqli = new mysqli($host, $user, $pass, $db, $port, $socket);
// Check connection
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
echo 'Success... ' . $mysqli->host_info . "\n";
$date = '2020-05-12 15:47:01';
$value = 18.2;
$unit = "DegC";
$label = "Temperature 1 (TEST VALS)";
$sql = "INSERT INTO Data(data_id, date, value, unit, label)
VALUES(NULL, $date, $value, $unit, $label);";
if ($mysqli->query($sql) === TRUE) {
echo "Data inserted";
} else {
echo "Error inserting data: " . $mysqli->error;
}
$mysqli->close();
?>
这是我拥有的 app.yaml。
runtime: php72
beta_settings:
cloud_sql_instances: project:location:instance-name
env_variables:
MYSQL_HOST: localhost
MYSQL_USER: root
MYSQL_PASSWORD: 12345
MYSQL_DB: dbname
MYSQL_PORT: NULL
MYSQL_SOCKET: /cloudsql/project:location:instance-name
谢谢!
解决方案
尝试使用下面的变量而不是您正在使用的变量,如GCP 示例中指定的那样:
CLOUDSQL_USER: USER
CLOUDSQL_PASSWORD: PASSWORD
CLOUDSQL_DSN: "mysql:dbname=DATABASE;unix_socket=/cloudsql/CONNECTION_NAME"
推荐阅读
- delphi-10.2-tokyo - delphi7转换为delphi tokyo app任务栏图标不喜欢移动到第二屏app
- c++ - 如何使 keypad.h 库打印出十六进制整数
- unity3d - 如何对目的地点进行地理编码?
- azure - Azure 搜索 - 部分短语匹配
- html - CSS 在网格中定位粘性侧边栏
- .net-core - 为生产禁用控制器 API 端点
- javascript - 设置最大边界不起作用传单
- c# - WPF C#:我的文本编辑器应该是文本文件的默认程序吗?
- c# - 如何在c#中确认进程关闭
- asp.net-mvc - 使用插件更改样式后,jquery 不再填充 MVC 5 选择下拉列表