Php 连接到mysql数据库时出错。

Php 连接到mysql数据库时出错。,php,pdo,Php,Pdo,它可能是重复的,但我在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); ?> 我的错误如下: 致命错误:未捕获PD

它可能是重复的,但我在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->u构造('mysql:host=127…,'root','')#1{main}在C:\xampp\htdocs\social#network create#account php第2行抛出


感谢您的快速回复。

您在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);


这应该管用!检查这个url()PDO更好地解释在那里!您的问题是关于字符集的

,因为在XAMPP/WAMP中使用的字符集需要特定


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

您只需删除“charset=utf8”中的空白即可。所以您可以使用“charset=utf8”。

通过编写localhost来尝试。还删除了字符集。现在它有两个错误。致命错误:未捕获PDO异常:PDO::_构造():php_网络_getaddresses:getaddrinfo失败:没有已知的此类主机。在C:\xampp\htdocs\social_network\create_account.php:2堆栈跟踪:#0 C:\xampp\htdocs\social_network\create_account.php(2):PDO->_构造('mysql:host=loc…,'root','')#1{main}下一个PDOException:SQLSTATE[HY000][2002]php_network getaddresses:getaddrinfo失败:没有这样的主机known@NazmusSakib用我的代码替换你的代码。。我已经更改了与您的
数据库
用户名
相同的所有详细信息,因此您可以将其替换为我的编码,然后用完整的代码更新您的问题。这不是连接错误@纳兹穆萨基布。。将
localhost
更改为
127.0.0.1
并重试。您可以查看,,
Mame Medoune Diop
提供的链接。。。它解释了
字符集
,从这里@gview I删除了所有空格。仍然是相同的错误。请在数据库上获取mysql命令行或phpmyadmin会话,并运行以下查询:选择@@version;显示字符集,如“u%”;
$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);