PDO mysql创建表不成功

时间:2015-09-27 22:01:51

标签: php mysql pdo

如果PDO中不存在,我已成功创建数据库。但是当我试图创建表时,它表示未知的数据库。它说未知的数据库。谢谢你的帮助。可能有一些错误

这是我的代码

<?php

    $host='localhost'; // Host name 
    $username='root'; // Mysql username 
    $password=''; // Mysql password 
    $database_name = "db_airlines"; // Database name 
    $tbl_name="users"; // Table name


try{
        $pdo = new PDO("mysql:host=localhost", $username, $password);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $database_name = "`".str_replace("`","``",$database_name)."`";
        $pdo->query("CREATE DATABASE IF NOT EXISTS $database_name");
        $pdo->query("use $database_name");

        $pdo = null;

    }catch(Exception $e){
        echo "database creation failed";
    }

    try{
         $db = new PDO('mysql:host=' . $host . ';dbname=' . $database_name, $username, $password);
         $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );//Error Handling
         $sql ="CREATE table $tbl_name(
         user_ID INT( 11 ) AUTO_INCREMENT PRIMARY KEY,
         Lastname VARCHAR( 250 ) NOT NULL, 
         Middle Name VARCHAR( 250 ) NOT NULL,
         Fistname VARCHAR( 250 ) NOT NULL, 
         Email VARCHAR( 250 ) NOT NULL, 
         Account_name VARCHAR( 250 ) NOT NULL, 
         password VARCHAR( 250 ) NOT NULL);" ;
         $db->exec($sql);
     }catch(Exception $e){
        die('error : ' . $e->getMessage());
     }

?>

2 个答案:

答案 0 :(得分:1)

您的sql不正确

Middle Name VARCHAR( 250 ) NOT NULL,
      |

列名

中不允许使用空格

将其Middle_Name

<强>更新

列名中允许

空格,只需在(`)

之间写入

答案 1 :(得分:0)

$db = new PDO('mysql:host=' . $host . ';dbname=' . $database_name, $username, $password);

此处$database_name不是db_airlines,而是

`db_airlines`

来自之前的

$database_name = "`".str_replace("`","``",$database_name)."`";

所以,试着改变它:

$database_name_quoted = "`".str_replace("`","``",$database_name)."`";
$pdo->query("CREATE DATABASE IF NOT EXISTS $database_name_quoted");
$pdo->query("use $database_name_quoted");