【问题标题】:gcloud PHP doesn't connect to sqlgcloud PHP没有连接到sql
【发布时间】:2020-05-13 05:29:20
【问题描述】:

我正在尝试在 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

谢谢!

【问题讨论】:

    标签: php mysql google-app-engine gcloud


    【解决方案1】:

    尝试使用下面的变量而不是您正在使用的变量,如 GCP samples 中指定的:

    CLOUDSQL_USER: USER
    CLOUDSQL_PASSWORD: PASSWORD
    CLOUDSQL_DSN: "mysql:dbname=DATABASE;unix_socket=/cloudsql/CONNECTION_NAME"
    

    【讨论】:

    • 谢谢,当我使用 getAttribute(PDO::ATTR_CONNECTION_STATUS) 并且我收到“已插入数据”成功消息时,看起来连接正在工作,但是当我签入云时,新值不存在贝壳。 $sql = $mysqli-&gt;prepare("INSERT INTO Data(data_id, date, value, unit, label) VALUES(null, ?, ?, ?, ?);"); $sql-&gt;execute([$date, $value, $unit, $label]); 这就是我现在插入的方式。 (对不起格式)
    • 尝试binding the parameters并在执行它之前记录stmt值以查看所有值是否正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多