2016-04-24 23 views
0

我知道如何在PDO中创建数据库,但是我在进行“检查”时遇到问题。如果你没有'this'数据库(其中数据库可能是mydb),那么我需要阅读,然后创建它,然后回显“mydb created successfully。”。创建一个使用PDO在PHP中创建数据库的检查(if语句)

如果已经有一个带有该名称的数据库,则会回显“mydb found”。 就像我说的我在这里使用PDO。我会展示我到目前为止。我还将包括我如何进行支票制作我将需要的表格。

非常感谢您的帮助!

<?php 
//Database creation 
require_once 'core/init.php'; 

$servername = Config::get('mysql/host'); 
$username = Config::get('mysql/username'); 
$password = Config::get('mysql/password'); 
$dbname = Config::get('mysql/db'); 
$createtable = false; 


try { 
    $conn = new PDO("mysql:host=$servername", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $sql = "CREATE DATABASE IF NOT EXISTS $dbname"; 
    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "Database created successfully<br>"; 
    $createtable = true; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
$createtable = true; 
} else { 
    echo Config::get('mysql/db'). '- found!'; 
} 

//Table1 creation 
if($createtable){ 
try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 

    // sql to create table 
    $table = 'surveys'; 
    $sql = "CREATE TABLE IF NOT EXISTS $table (
    id INT(11) AUTO_INCREMENT PRIMARY KEY, 
    username VARCHAR(20) NOT NULL, 
    password VARCHAR(64) NOT NULL, 
    last_name VARCHAR(20) NOT NULL, 
    first_name VARCHAR(20) NOT NULL, 
    middle_name VARCHAR(20), 
    address_1 VARCHAR(32) NOT NULL, 
    address_2 VARCHAR(32), 
    city VARCHAR(32) NOT NULL, 
    state VARCHAR(12) NOT NULL, 
    zip INT(12) NOT NULL, 
    salt VARCHAR(32) NOT NULL 
    )"; 

    // use exec() because no results are returned 
    $conn->exec($sql); 
    echo "Table {$table} created successfully"; 

//Table2 creation 
    $table = 'users_session'; 
    $sql = "CREATE TABLE IF NOT EXISTS $table (
    id INT(11) AUTO_INCREMENT PRIMARY KEY, 
    user_id INT(11) NOT NULL, 
    hash VARCHAR(64) NOT NULL, 
    )"; 

    $conn->exec($sql); 
    echo "Table {$table} created successfully"; 
    } 

catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
} else { 
    echo "Tables are already made and ready to go!"; 
} 
?> 
+0

看看这个:http://stackoverflow.com/questions/2583707/can-i-create-a-database-using- pdo-in-php – Edward

回答

0

您可以使用SHOW TABLES此:

$sql = "SHOW TABLES LIKE 'tableName'"; 
$tableExists = $conn->query($sql)->rowCount() > 0; 
if(!$tableExists){ 
    //create table 
} 
+0

对不起,我想我想知道的是,当有人在那里打开这个文件时,它会按顺序执行这些任务。 1.制作数据库(如果不在电脑上),然后告诉用户它已经创建了db 2.如果数据库不在那里(如果第一次为用户使用它们,那么将它们制作成表),然后告诉它创建它们的用户 3.一旦完成,应该说db找到了,找到了表,每次用户打开它 – tdog

+0

只需检查 - 你是否知道pcs通常根本就没有数据库?只有当用户安装了Web服务器,PHP和MySQL以及配置才能将该脚本连接到MySQL服务器时,才能运行该脚本。 – larsAnders