Я знаю, что этот вопрос уже задавался, и я попробовал эти решения, но они не сработали. Я создаю социальную сеть, однако системы регистрации не работают, так как при нажатии кнопки «Отправить» выдается следующее сообщение об ошибке:
Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [3D000]: недопустимое имя каталога: 1046 База данных не выбрана» в C: \ xampp \ htdocs \ Breakr \ classes \ DB.php: 12 Трассировка стека: # 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 используйте … ‘, Array) # 2 {main}, брошенный в C: \ xampp \ htdocs \ Breakr \ classes \ DB.php в строке 12
Похоже, что проблемы со строкой 12 на DB.php (database.php)
<?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 на create-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>
благодарю вас
Попробуйте использовать
mysql:host=127.0.0.1;dbname=breakr_main;charset=utf8
вместо
mysql:127.0.0.1;dbname=breakr_main;charset=utf8
измените строку кода, как показано ниже
$pdo = new PDO('mysql:host=127.0.0.1;dbname=breakr_main;charset=utf8', 'root', '');
Для справки смотрите этот.