【问题标题】:Error connecting to mysql database.连接到 mysql 数据库时出错。
【发布时间】:2017-12-08 07:53:11
【问题描述】:

这可能是重复的,但我浏览了 stackoverflow 其他帖子中建议的所有解决方案,但找不到解决方案。

 <?php
$PDO= new PDO('mysql:host= 127.0.0.1; dbname = social_network; charset= utf8', 'root', '' );
$PDO-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

?>

我遇到的错误如下:

致命错误:未捕获的 PDOException:SQLSTATE[HY000] [2019] C:\xampp\htdocs\social_network\create_account.php:2 中的未知字符集 堆栈跟踪:#0 C:\xampp\htdocs\social_network\create_account。 php(2): PDO->__construct('mysql:host= 127...', 'root', '') #1 {main} 在第 2 行的 C:\xampp\htdocs\social_network\create_account.php 中抛出

感谢您的快速回答。

【问题讨论】:

  • 您可以查看 ,, Mame Medoune Diop 提供的链接 ...它解释了 Charset 从这里 phpdelusions.net/pdo
  • @gview 我删除了所有空格。还是一样的错误。
  • 请在您的数据库上获取 mysql 命令行或 phpmyadmin 会话并运行以下查询:select @@version;显示像 'u%' 这样的字符集;

标签: php pdo


【解决方案1】:

您在 DSN 中有一个额外的空间,它被视为字符集名称的一部分,因此必须将其删除。

<?php
$servername = 127.0.0.1;  //localhost
$username = "root";
$password = "";
$dbname = "social_network";
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

【讨论】:

  • 通过写 localhost 进行了尝试。还删除了字符集。现在它有两个错误。
  • 致命错误:未捕获的 PDOException:PDO::__construct():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。在 C:\xampp\htdocs\social_network\create_account.php:2 堆栈跟踪:#0 C:\xampp\htdocs\social_network\create_account.php(2): PDO->__construct('mysql:host= loc... ', 'root', '') #1 {main} Next PDOException: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: No such host is known
  • @NazmusSakib 只需用我的代码替换您的代码 .. 我已经更改了与您的 databaseusername 相同的所有详细信息,因此您可以用我的代码替换它没有问题跨度>
  • 你能用你的完整代码更新你的问题吗? Bcoz 这不是连接错误!
  • @NazmusSakib .. 将 localhost 更改为 127.0.0.1 并再试一次
【解决方案2】:

您只需删除“charset=utf8”中的空格。所以你会有“charset=utf8”。

【讨论】:

    【解决方案3】:

    对于 XAMPP/WAMP 中使用的字符集需要具体说明。

    您可以将 charset=utf8 改为 charset=utf8mb4

    【讨论】:

      【解决方案4】:
      $host = '127.0.0.1';
      $database = 'social_network';
      $user = 'root';
      $password = '';
      $charset = 'utf8';
      $options = [
              PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
              PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
              PDO::ATTR_EMULATE_PREPARES => false
          ];
      $dsn = "mysql:host=$host;dbname=$database;charset=$charset";
      $db = new PDO($dsn, $user, $password, $options);
      

      这应该可以!检查这个 url (https://phpdelusions.net/pdo) PDO 有更好的解释!你的问题是关于字符集的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 2011-03-29
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        相关资源
        最近更新 更多