Php 连接到mysql数据库时出错。
它可能是重复的,但我在stackoverflow上浏览了其他帖子中建议的所有解决方案,但找不到解决方案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
<?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);