gcloud PHP无法连接到SQL

时间:2020-05-13 05:29:20

标签: php mysql google-app-engine gcloud

我正在尝试在gcloud上设置一个PHP文件和MySQL服务器,以供带有板载HTML / JS / CSS的IoT设备使用,但我无法使我的PHP(在应用程序引擎上)正确连接到MySQL。 (我对gcloud还是很陌生)

我有一些代码可以检查连接错误,但是即使输入了错误的密码也不会引发任何错误。

这是我的PHP,它应该建立连接并插入一些测试数据,但是我总是收到“ Error inserting data ...”错误,并带有空白的$ mysqli-> error。

<?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

谢谢!

1 个答案:

答案 0 :(得分:0)

请尝试使用下面的变量,而不要使用GCP samples中指定的变量:

(function(sdkUrl, b, flag) {
  if (window[b])
    return;
  if (!window.JSON)
    return;
  let url = sdkUrl;
  let h = /Chrome\/(\d+)/.exec(navigator.userAgent);
  h && Number(h[1]) >= 55 && "assign" in Object && "findIndex" in [] && (url += "");
  let js = document.createElement("script");
  js.src = url;
  js.async = !0;

  //
  // Listen here:
  //
  js.addEventListener('load', function() {
    console.log($)
  });

  flag && (js.crossOrigin = "anonymous");
  let i = document.getElementsByTagName("script")[0];
  i.parentNode && i.parentNode.insertBefore(js, i)
})('https://code.jquery.com/jquery-3.5.1.slim.min.js', 'UB', true);