【问题标题】:PHP pdo fetchColumn() not working specifically on Google App EnginePHP pdo fetchColumn() 不适用于 Google App Engine
【发布时间】:2016-03-10 19:55:42
【问题描述】:

我们有一个使用 pdo 代码和 mySQL 数据库的 PHP 脚本,所有这些都托管在我们的 ISP 标准 LAMP 堆栈上,运行数周后没有任何问题。 Boss 想部署到 Google App Engine 和 CloudSQL。 CloudSQL 填充了相同的数据。从本地机器上的 GAE 开发实现中运行它,指向 mySQL 和 CloudSQL,在这两种情况下都可以正常工作。

在云中将 PHP 代码部署到 GAE 并更改 pdo 连接字符串以适应 GAE 到 CloudSQL 连接时,我们收到以下错误:

致命错误:调用成员函数 fetchColumn() 非对象...

include 'database.php';     //pdo connection with try|catch confirming connection.
$pdo = Database::connect(); //No problems here.  We have connection object.
$sql = "SELECT Count(CatalogID) FROM Catalog";
$rows = $pdo->query($sql)->fetchColumn(); //This is the line that throws the error.

为什么 GAE 处理方式不同?

有什么解决办法吗? (我强烈希望不要针对“从目录中选择目录 ID”调用 rowCount()。要带回的记录太多。似乎效率低下。)

【问题讨论】:

    标签: php google-app-engine pdo google-cloud-sql


    【解决方案1】:

    找到了。由于 $pdo 不知道要查询 CloudSQL 实例中的哪个数据库,因此 query($sql) 部分失败。 CloudSQL 仪表板有一个链接“如何连接到您的 CloudSQL 实例”。由于我复制并粘贴了此连接代码,因此我错过了它缺少 dbname 组件。

    Google 将 dbname 部分包含在 mysqli 部分中,但未包含“如何连接到您的 CloudSQL 实例”的 pdo 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-06
      • 2015-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多