【问题标题】:PHP Error: no database selected even though spelling is rightPHP 错误:即使拼写正确,也没有选择数据库
【发布时间】:2017-05-06 08:05:58
【问题描述】:

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

致命错误:未捕获的异常“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 use...', Array) #2 {main} 在第 12 行的 C:\xampp\htdocs\Breakr\classes\DB.php 中抛出

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;
    }

    }

以及 create-account.php 上的第 9 行

<?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 手册中列出了正确的连接语法。

标签: php mysql database pdo social-networking


【解决方案1】:

尝试使用

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

而不是

mysql:127.0.0.1;dbname=breakr_main;charset=utf8 

【讨论】:

  • 是的,修复了它
【解决方案2】:

如下修改你的代码行

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

参考请见this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多