2015-09-27 6 views
0

Я успешно создал базу данных, если она не существует в PDO. Но когда я попытался создать таблицу, она говорит о неизвестной базе данных. В нем говорится неизвестная база данных. Спасибо вам за помощь. вероятно, получил некоторую ошибкуPDO mysql create table неуспешно

Вот мой код

<?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()); 
    } 

?> 
+0

где создается код таблицы? –

+0

жаль, что это уже есть, я отредактировал сообщение –

+0

, что такое точная ошибка ?? –

ответ

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"); 
+0

Спасибо, что решает мою проблему. Оно работает. –

+0

Все еще я не понимаю, почему так долго нам это нужно было замечать. – Federkun

+0

возможно, но спасибо, потому что это работает. :) –

1

Ваш SQL не является правильным

Middle Name VARCHAR(250) NOT NULL, 
     | 

Space не допускается в имени столбца

сделать Middle_Name

ОБНОВЛЕНИЕ

пространство допускается в колонке имя просто написать его между (`)

+0

или обернуть имя столбца обратными окнами (') – Federkun

+0

Хорошее место, но не должно давать ошибки, которые он получает, должно давать синтаксическую ошибку. Может быть, OP получает неправильную информацию об ошибке, хотя –

+0

все еще ошибка: SQLSTATE [HY000] [1049] Неизвестная база данных '' db_airlines' ' –

Смежные вопросы