使用PDO创建表 - 无法正常工作

时间:2014-09-15 20:06:08

标签: php mysql pdo

我知道这有一些线索,但我已经完成了它们并且尚未找到解决方案。

我遇到的问题是,当我执行代码使用PHP的PDO对象创建表时,没有任何反应。我没有收到错误,但我也没有得到一张桌子。

这是我的代码:

    $pdo = new pdo('mysql:localhost;ijdb','root','');
try {  
    $sql = 'CREATE TABLE joke 
    (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            joketext TEXT,
            jokedate DATE NOT NULL
    ) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB'; 
    $pdo->exec($sql);
    $sql = 'INSERT INTO joke values
    (
        (1,"jokes","2014-04-22")
    )';
    $pdo->exec($sql);
 } 
catch (PDOException $e) {  $output = 'Error creating joke table: ' . $e->getMessage();
exit(); }

正如我所说,根本没有任何事情发生,表格没有创建。

任何帮助将不胜感激!如果这是一个重复的帖子,请指出我正确的方向,我将删除此帖。

1 个答案:

答案 0 :(得分:3)

如果您想要完成这项工作,请执行以下操作:

旁注: 这将创建相同jokes2014-04-22的新数据条目。

如果您不想继续添加,请使用单独的脚本设置新查询 (PDO with) prepared statements。和/或将列设置为UNIQUE

注意:1应该省略INSERT,因为您的id列是AUTO_INCREMENT

try {

 $pdo = new pdo('mysql:host=localhost;dbname=your_db', 'username', 'password_if_any');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "CREATE TABLE IF NOT EXISTS joke
    (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            joketext TEXT,
            jokedate DATE NOT NULL

                ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

    INSERT INTO joke (joketext, jokedate) values ('jokes','2014-04-22')";

    $pdo->exec($sql);

 } 
catch (PDOException $e) {  

$output = 'Error creating joke table: ' . $e->getMessage();

echo $output;
exit(); 
}