连接到MYSQL时出错

Ste*_*ven 7 php mysql connection

这是config.php文件

<?php

error_reporting(E_ALL ^ E_NOTICE);

/*=========== Database Configuraiton ==========*/

$db_host = "localhost";
$db_user = "test";
$db_pass = "test";
$db_name = "dbtest";


/*=========== Website Configuration ==========*/

$defaultTitle = 'testing';
$defaultFooter = date('Y').' &copy; testing';

?>
Run Code Online (Sandbox Code Playgroud)

这是对config.php的引用

<?php


require_once "includes/config.php";
require_once "includes/connect.php";
require_once "includes/helpers.php";



header('Cache-Control: max-age=3600, public');
header('Pragma: cache');
header("Last-Modified: ".gmdate("D, d M Y H:i:s",time())." GMT");
header("Expires: ".gmdate("D, d M Y H:i:s",time()+3600)." GMT");

?>
Run Code Online (Sandbox Code Playgroud)

Connect.php如下

<?php

/*
        The login details are taken from config.php.
*/

try {
    $db = new PDO(
        "mysql:host=$db_host;dbname=$db_name;charset=UTF-8",
        $db_user,
        $db_pass
    );

    $db->query("SET NAMES 'utf8'");
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
    error_log($e->getMessage());
    die("A database error was encountered");
}


?>
Run Code Online (Sandbox Code Playgroud)

有没有人看到这个代码的问题?我从connect.php收到错误消息"遇到数据库错误"我需要另一组眼睛,因为我的所有信息看起来都正确,我无法在代码中看到错误.谢谢.

gau*_*iya 25

你简单地将UTF-8改为utf8 ..

try {
      $db = new PDO(
              "mysql:host=$db_host;dbname=$db_name;charset=utf8",
              $db_user,
              $db_pass
            );
Run Code Online (Sandbox Code Playgroud)


Gov*_*tla 1

一旦尝试直接使用您的凭据,而不是使用它们作为变量。

还尝试使用以下进行调试:

catch(PDOException $e) {
    error_log($e->getMessage());
    die("A database error was encountered -> " . $e->getMessage() );
}
Run Code Online (Sandbox Code Playgroud)

让我知道它是否有效。

  • 这只是一个问题还是删除-8并使其成为utf8 (20认同)
  • 那么你应该像这样调试它: $db = new PDO( "mysql:host=$db_host;dbname=$db_name;", $db_user, $db_pass ); 连接时删除 charset=UTF-8。 (4认同)
  • 哈哈,是 UTF-8 而不是 utf8 导致了这个问题。我知道我错过了一些微小的事情。感谢戈文德的所有帮助。 (4认同)
  • SQLSTATE[HY000] [2019]无法初始化字符集UTF-8(路径:/usr/share/mysql/charsets/) (2认同)