首页 文章

PHP pdo fetchColumn()在Google App Engine上没有专门的工作

提问于
浏览
0

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

在将PHP代码部署到 Cloud 中的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的处理方式不同?

有解决方案吗(我更倾向于不对“从目录中选择CatalogID;”调用rowCount() . 有太多记录可以带回来 . 看起来效率低下 . )

1 回答

  • 0

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

    谷歌包括mysqli部分中的dbname部分,但不包括“如何连接到您的CloudSQL实例”的pdo部分 .

相关问题