【问题标题】:Php script hangs at "new PDO" object creationPHP 脚本在“新 PDO”对象创建时挂起
【发布时间】:2022-01-29 16:33:54
【问题描述】:

我在使用 PDO 创建对象时遇到问题。

以下是我的代码,它在“新 PDO”处挂起。并且没有响应,也没有错误。

<?php
$user = "root";
$password = "password";
$database = "test";
$table = "test";

try {
  $db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
  var_dump($db);
  echo "<h2>TODO</h2><ol>";
  foreach($db->query("SELECT content FROM $table") as $row) {
    echo "<li>" . $row['content'] . "</li>";
  }
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

谁能帮我理解我为什么会遇到这个问题。

我正在运行 ubuntu 20.04

【问题讨论】:

  • 确保您启用了错误报告...要在实时环境中从 PHP 中获取错误,请将这 4 行添加到要调试的任何基于 MYSQLI_ 的脚本的顶部 ini_set('display_errors' , 1); ini_set('log_errors',1);错误报告(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);。这将强制任何 MYSQLI_ 错误生成您可以在浏览器上看到的异常以及正常的 PHP 错误。
  • @Martin,没有错误,因为脚本挂起。我附上了截图
  • 当它挂起时,可能是 dns 解析问题或连接问题。您可以使用telnet localhost 3306telnet 127.0.0.1 3306 连接到数据库吗?

标签: php pdo


【解决方案1】:

在 PHP 版本 8 中,默认的 PDO-Errormode 是 ERRMODE_SILENT。尝试将 Errmode 设置为 ERRMODE_EXCEPTION。

$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

【讨论】:

  • 好电话。老实说,OP 应该使用 PHP8,但......并不是每个人都这样做
  • @daniel PHP 解析错误:语法错误,意外的 '=>' (T_DOUBLE_ARROW),在第 12 行的 /usr/src/freepbx/test.php 中需要 ']'
  • 我忘记了一个逗号:$password, [PDO
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
相关资源
最近更新 更多