我试图用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';
?>
在这里&#34; connessione.php&#34;文件:
<?php
$host = 'host=localhost';
$mysql_user = 'root';
$mysql_password = '';
$database = 'php';
try {
$pdo = new PDO('mysql:$host;dbname=$database', $mysql_user, $mysql_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
$output = 'Impossibile connettersi al database: ' . $e->getmessage();
include 'output.html.php';
exit();
}
?>
我检查了&#34; connessione.php&#34;文件和数据库的连接是对的。此外,我检查了用户权限,root拥有&#34; php&#34;的所有权限。数据库......问题是什么?!
答案 0 :(得分:2)
有问题的一行是连接本身:
$pdo = new PDO('mysql:$host;dbname=$database'
请记住,这是一个字符串文字,因为它们用单引号括起来。
如果要插入变量,请将它们改为双引号。
$pdo = new PDO("mysql:$host;dbname=$database", $mysql_user, $mysql_password);
答案 1 :(得分:0)
它看起来就像你错过了#34; host =&#34;在创建db句柄时。我还建议在提出问题之前搜索SO或Google - 此问题有大量点击:PHP PDO: Unable to connect, Invalid catalog name