Php SQLSTATE[3D000]:1046-未选择任何数据库
我试图用php执行SQL CREATE命令,但遇到以下问题: 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
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);