2017-05-19 15 views
-2

SQLに新しいデータベースと新しいテーブルが存在しない場合は作成します。このコードを2回実行するとうまく動作しますが、初めて実行するときにテーブルが作成されません。 以下、私は助けてくださいテーブルを作成する方法データベースが存在しない場合は、PHPを使用してデータベースですか?

$dbhost = '7.0.0.1'; 
$dbuser = 'root'; 
$dbpass = '123'; 
$dbname = 'promo_gmail'; 
$maxcharinaline = 1000; 
$delimeter  = ','; 
$usertb = "promo_userb"; 
$typetb = "promo_typeb"; 
// Now just insert the data one by one assuming its valid 
{ 
     $conn = mysql_connect($dbhost, $dbuser, $dbpass); 
     if(!$conn) 
     { 
       die('Failed to connect to server: ' . mysql_error()); 
       exit; 
     } 
     $db_selected = mysql_select_db($dbname); 
     if(!$db_selected) 
     { 
       $db_selected = "CREATE DATABASE $dbname"; 
     } 
     mysql_query($db_selected,$conn); 
     $usertb1 = mysql_query("select 1 from $usertb LIMIT 1"); 
     if($usertb1 == FALSE) 
     { 
       $usertb1 = "CREATE TABLE IF NOT EXISTS $usertb (uid INT(20) AUTO_INCREMENT UNIQUE KEY NOT NULL,name VARCHAR(40),email varchar(40) PRIMARY KEY NOT NULL)"; 
       mysql_query($usertb1,$conn); 

     } 
     $typetb1 = mysql_query("select 1 from $typetb LIMIT 1"); 
     if($typetb1 == FALSE) 
     { 
       $typetb1 = "CREATE TABLE IF NOT EXISTS $typetb (uid INT(20) , type ENUM('WEB','APP','AT') NOT NULL ,unsubscribe TINYINT(1) NOT NULL,bounce TINYINT(1) NOT NULL,complaint TINYINT(1) NOT NULL, FOREIGN KEY (uid) REFERENCES promo_user (uid) , PRIMARY KEY (uid,type))"; 
       mysql_query($typetb1,$conn); 
     } 

を使用していたコードです。

+0

言い難いに変更されますスニペットが、確か 'するmysql_query($ db_selected、$ CONN)が' ''($ db_selected!)であれば内部の属している必要があります - 、そうでない場合は、あなたを常にデータベースの作成を試みているため、おそらくエラーが発生します。 'echo mysql_error($ conn)'でエラーをチェックする必要があります。その後、データベースを作成した後、mysql_select_db()を再度呼び出して、新しく作成したデータベースを選択する必要があります。それはおそらくそれが2回目の理由です。初めてdbが作成されたため、 'CREATE TABLE'を実行するとデータベースが選択されません。 –

+3

<! - * mysql_ extensionは死んでいます。* - > – CD001

+0

mysql _ *()関数は、何年も前に廃止され、PHP7で削除されました。それらは新しいコードに使用すべきではありません。 MySQLiまたはPDOはより適切な近代的な選択です –

答えて

0

これを初めて実行すると、データベースが存在するかどうかを確認していて、存在しない場合は作成しています。しかし、私はあなたがデータベースを作成した後に

$db_selected = mysql_select_db($dbname); 

を実行する必要があると思います。

ですから、

$conn = mysql_connect($dbhost, $dbuser, $dbpass); 
if(!$conn) 
{ 
     die('Failed to connect to server: ' . mysql_error()); 
     exit; 
} 
$db_selected = mysql_select_db($dbname); 
if(!$db_selected) 
{ 
     $db_selected = "CREATE DATABASE $dbname"; 
} 
//Create the new database   
mysql_query($db_selected,$conn); 
//Select the new database 
$db_selected = mysql_select_db($dbname); 
//Go ahead with your table queries 
$usertb1 = mysql_query("select 1 from $usertb LIMIT 1"); 
if($usertb1 == FALSE) 
{ 
     $usertb1 = "CREATE TABLE IF NOT EXISTS $usertb (uid INT(20) AUTO_INCREMENT UNIQUE KEY NOT NULL,name VARCHAR(40),email varchar(40) PRIMARY KEY NOT NULL)"; 
     mysql_query($usertb1,$conn); 
} 
関連する問題