PHP Error: no database selected even though spelling is right

PHP Error: no database selected even though spelling is right

我知道之前有人问过这个问题,我已经尝试过这些解决方案,但都没有奏效。我正在创建一个社交网络,但是注册系统无法正常工作,因为当我单击提交时它给我这个错误:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in C:\xampp\htdocs\Breakr\classes\DB.php:12 Stack trace: #0 C:\xampp\htdocs\Breakr\classes\DB.php(12): PDOStatement->execute(Array) #1 C:\xampp\htdocs\Breakr\create-account.php(9): DB::query('INSERT INTO use...', Array) #2 {main} thrown in C:\xampp\htdocs\Breakr\classes\DB.php on line 12

DB.php (database.php)

上的第 12 行似乎有问题
 <?php
class DB {

    private static function connect() {
        $pdo = new PDO('mysql:127.0.0.1;dbname=breakr_main;charset=utf8', 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
      }

    public static function query($query, $params = array()) {
        $statement = self::connect()->prepare($query);
        $statement->execute($params);
        $data = $statement->fetchALL();
        return $data;
    }

    }

以及创建时的第 9 行-account.php

<?php
include('classes/DB.php');

if (isset($_POST['createaccount'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$email = $_POST['email'];

DB::query('INSERT INTO users VALUES (\'\',:username, :password, :email)', array(':username'=>$username, ':password'=>$password, ':email'=>$email ));
echo "success!";

}
?>

<h1>Register</h1>
<form action="create-account.php" method="post">
<input type="text" name="username" value="" placeholder="Username"><p />
<input type="password" name="password" value="" placeholder="Password"><p />
<input type="email" name="email" value="" placeholder="Email"><p/ >
<input type="submit" name="createaccount" value="Create Account">
</form>

谢谢

如下更改您的代码行

$pdo = new PDO('mysql:host=127.0.0.1;dbname=breakr_main;charset=utf8', 'root', '');

参考请见this

尝试使用

mysql:host=127.0.0.1;dbname=breakr_main;charset=utf8 

而不是

mysql:127.0.0.1;dbname=breakr_main;charset=utf8