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