Php SQLSTATE[3D000]:1046-未选择任何数据库

Php SQLSTATE[3D000]:1046-未选择任何数据库,php,mysql,pdo,Php,Mysql,Pdo,我试图用php执行SQL CREATE命令,但遇到以下问题: SQLSTATE[3D000]:目录名称无效:1046未选择数据库 我真的不知道哪里出了问题,你能帮我吗 以下是脚本: <?php include 'connessione.php'; try { $sql = 'CREATE TABLE joke ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, joketext TEXT,

我试图用php执行SQL CREATE命令,但遇到以下问题:

SQLSTATE[3D000]:目录名称无效:1046未选择数据库

我真的不知道哪里出了问题,你能帮我吗

以下是脚本:

<?php

include 'connessione.php';

try {
    $sql = 'CREATE TABLE joke (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            joketext TEXT,
            jokedate DATE NOT NULL 
            ) DEFAULT CHARACTER SET uft8 ENGINE=InnoDB';
    $pdo->exec($sql);
} catch (PDOException $e){
    $output = 'Errore nella creazione della tabella joke: ' . $e->getMessage();
    include 'output.html.php';
    exit();
}

$output = 'Tabella creata con successo.';
include 'output.html.php';

?>

这里是“connessione.php”文件:



我检查了“connessione.php”文件,与数据库的连接正确。另外,我检查了用户权限,root用户拥有“php”数据库的所有权限。。。怎么了

创建db句柄时,似乎缺少“host=”。我还建议在提问之前先搜索SO或谷歌-本期点击率高:

问题在于连接本身:

$pdo = new PDO('mysql:$host;dbname=$database'
请记住,这是一个字符串文字,因为它们用单引号包装

如果要插值变量,请使用双引号对其进行更改

$pdo = new PDO("mysql:$host;dbname=$database", $mysql_user, $mysql_password);

是的,但是。。。变量我做错了什么?还有。。。为什么我只进行连接就可以了,而如果我使用相同的连接代码创建一个表就错了?不管怎样,我没有看到您在变量中设置“host=”——这是一个奇怪的约定。我将“host=”部分移动到创建句柄的语句中,并将变量保留为值“localhost”。更容易调试,如果需要,更容易更改。你怎么知道连接成功了?我没有看到任何声明或任何东西证实这一点,那么你怎么确定?尝试回显您的变量,看看它们是否包含您认为它们所包含的内容;包括“output.html.php”;另外:如果我在语句中设置“host=”,则连接未完成!
$pdo = new PDO("mysql:$host;dbname=$database", $mysql_user, $mysql_password);