【问题标题】:PHP new PDO Connection IssuePHP 新的 PDO 连接问题
【发布时间】:2015-12-14 18:35:51
【问题描述】:

我经营一个游戏论坛和相关的游戏服务器。在过去的 2 年里,用户在论坛上注册,他们的名字/密码然后传递到我的游戏服务器数据库。一旦他们完成注册,就会发出另一个调用,翻转游戏数据库中的一个标志以允许他们玩。

在某些时候,这个过程停止工作,所有新的论坛帐户(phpbb 论坛)根本就没有进入我的游戏 SQL 服务器。我在我的游戏服务器上打开了我的 SQL 监视器,并且从未使用已传递的凭据建立连接。创建新帐户时,我也没有列出任何错误。代码如下:

// Create game account

try {
$acctConnection = new PDO('mysql:dbname=DB_Redacted;host=x.x.x.x;port=33306;charset=utf8','DB_forum','PasswordHere', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
$acctStmt = $acctConnection->prepare('CALL forum_link(?,?)');
$acctStmt->bindParam(1, $newname);
$acctStmt->bindParam(2, $plainpassword);
$acctStmt->execute();
$acctConnection = NULL;
} catch (PDOException $e) {
echo 'Creating game account failed';
}

forum_link 是用于将值插入游戏数据库的存储过程。该帐户还设置为仅接受来自我的专用 IP 论坛主机的连接,该 IP 没有更改,并且还能够运行列出的存储过程。游戏服务器正在侦听列出的端口,我什至在没有运行防火墙的情况下进行了测试。我对此相当陌生,因为该过程是由另一个不再从事该项目的开发人员设置的,但似乎在很长一段时间内都没有失败。有什么想法可能是错误的和/或我如何获得更强大的日志记录以发现问题可能是什么?

【问题讨论】:

  • 查看错误日志。
  • 很遗憾,没有任何记录。我正在考虑退出此部分并仅测试连接性,但我担心现有的日志记录不正确或由于某种原因未显示。
  • 一切都会被记录下来,除非设置你的服务器的人是个笨蛋。
  • 为什么这个标签是 sql-server?另外,您可以发布存储过程代码吗?尝试在您的 MySQL 控制台中测试 SP。另外,try/catch 中是否出现 PDO 异常?
  • SP 工作正常,我可以从我的游戏服务器运行它来手动添加帐户。该帖子被标记为 SQL,因为我觉得这可能是 SQL 到 SQL 的连接问题,但我希望通过找到某种方法来捕获错误(如果有的话)会被抛出。我不熟悉 try/catch,它是如何工作的和/或它是如何实现的?

标签: php mysql sql pdo


【解决方案1】:

这最终成为一个问题,即 PDO 函数由于 Web 服务器上的 Java 损坏而损坏/丢失。这是由于托管问题。我通过选择要在 CPANEL 中使用的新的(更新的)java 版本来重置它,它重新安装了 PDO 模块,然后我与其他 SQL 服务器的连接没有问题。我需要在我的 PDO 语句中添加额外的错误日志记录来解决这个问题,我通过其他地方的一些 webdevs 找到了如何做到这一点。

【讨论】:

    猜你喜欢
    • 2020-08-10
    • 2021-10-16
    • 2020-02-29
    • 2019-02-07
    • 2011-09-21
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    相关资源
    最近更新 更多