首页 > 解决方案 > PHP:未捕获的 PDOException:SQLSTATE [3D000]:无效的目录名称:1046 未选择数据库

问题描述

我正在尝试使用 PHP 制作注册页面,但我不熟悉这种语言和 MySQL。所以我一直在关注它的教程。我正确地遵循了一切并检查了多次。但我看不到问题所在。配置.php:

<<?php

$db_user = "root";
$db_pass = "";
$db_name = "useraccounts";

$db = new PDO('mysql:host=localhost;db_name=$db_name', $db_user, $db_pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>

注册.php

<?php
    if (isset($_POST['create'])) {
        if ($_POST['password'] == $_POST['confirm-password']) {
            $username = $_POST['username'];
            $email = $_POST['email'];
            $password = $_POST['password'];

            $sql = "INSERT INTO users (username, email, password) VALUES(?,?,?)";
            $stmtinsert = $db->prepare($sql);
# line 30 \/ \/ \/ \/
            $result = $stmtinsert->execute([$username, $email, $password]);
            if ($result) {
                echo "yeeeet";
            } else {
                echo "nope";
            }
        }
    } else {

    }
    ?>

错误:致命错误:未捕获的 PDOException:SQLSTATE[3D000]:无效目录名称:1046 在 C:\xampp\htdocs\Website\registration.php:30 中未选择数据库 堆栈跟踪:#0 C:\xampp\htdocs\Website\ registration.php(30): PDOStatement->execute(Array) #1 {main} 在第 30 行的 C:\xampp\htdocs\Website\registration.php 中抛出

标签: phpmysql

解决方案


您没有正确的 dns 字符串 对字符串中的 eval var 使用双引号(而不是单引号)

$db = new PDO("mysql:host=localhost;db_name=$db_name", $db_user, $db_pass);

推荐阅读