没有选择数据库?

时间:2014-05-30 01:05:21

标签: php mysql pdo

我正在尝试使用PDO向我的数据库插入一些值,但它只是说"没有选择数据库"。

$host = "localhost";
$dbname = "aura";
$user = "root";
$pass = "somepassword";

try {
$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$DB->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$DB->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
}

$SignUp = $DB->prepare("INSERT INTO `users` (`username`, `password`, `name`, `email`, `rank`, `lvl`, `xp`, `money`, `age`, `reg_ip`, `last_ip`, `created`, `last_online`, `last_action`, `online`)
    VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    $SignUp->bindValue(1, $username);
    $SignUp->bindValue(2, $password);
    $SignUp->bindValue(3, $name);
    $SignUp->bindValue(4, $email);
    $SignUp->bindValue(5, '1');
    $SignUp->bindValue(6, '1');
    $SignUp->bindValue(7, '1');
    $SignUp->bindValue(8, '100');
    $SignUp->bindValue(9, NULL);
    $SignUp->bindValue(10, $ip);
    $SignUp->bindValue(11, $ip);
    $SignUp->bindValue(12, $time);
    $SignUp->bindValue(13, $time);
    $SignUp->bindValue(14, $time);
    $SignUp->bindValue(15, $online);

    try{
    $SignUp->execute();
    } catch(PDOException $e){
    die($e->getMessage());
    } 

我不知道为什么我会收到此错误,因为我已成功连接到数据库,因为您可以看到我已指定了数据库。

1 个答案:

答案 0 :(得分:0)

它看起来没问题,但是你可能遇到第一次尝试捕获问题而你没有被杀,并且可能会使插入与第一次错误混淆。 还使用$e->__toString()将整个语句包装在try catch块中,它将为您提供完整的堆栈跟踪,通常可以更容易地跟踪错误的位置。

试试这个,我无法告诉您以下更改是否可以解决问题,但可能会更清晰。

<?php 
$host = "127.0.0.1";
$dbname = "aura";
$user = "root";
$pass = "somepassword";

try {
    $DB = new PDO('mysql:host='.$host.';dbname='.$dbname, $user, $pass, array(
        PDO::ATTR_EMULATE_PREPARES => false,
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
    );

} catch(PDOException $e) {
    die('<pre>'.$e->__toString().'</pre>');
}


try{
    $SignUp = $DB->prepare("
    INSERT INTO `users` (`username`, `password`, 
                         `name`, `email`, `rank`, 
                         `lvl`, `xp`, `money`, 
                         `age`, `reg_ip`, `last_ip`, 
                         `created`, `last_online`, 
                         `last_action`, `online`)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ");

    $SignUp->bindValue(1, $username);
    $SignUp->bindValue(2, $password);
    $SignUp->bindValue(3, $name);
    $SignUp->bindValue(4, $email);
    $SignUp->bindValue(5, '1');
    $SignUp->bindValue(6, '1');
    $SignUp->bindValue(7, '1');
    $SignUp->bindValue(8, '100');
    $SignUp->bindValue(9, NULL);
    $SignUp->bindValue(10, $ip);
    $SignUp->bindValue(11, $ip);
    $SignUp->bindValue(12, $time);
    $SignUp->bindValue(13, $time);
    $SignUp->bindValue(14, $time);
    $SignUp->bindValue(15, $online);
    $SignUp->execute();
} catch(PDOException $e){
    die('<pre>'.$e->__toString().'</pre>');
}
?>