2012-02-14 15 views
1

ここには、CMSとPAGESが存在しない場合に2つの新しいテーブルを作成するコードがありますが、CMSは作成中ですがPAGESは無視されます作成されていません。ここでPHPは新しいデータベーステーブルをクエリ経由で作成することはできません

は、テーブル屋はそれが機能だ行く

private function buildDB() { 

#lets create cms table if one does not exist 
$make_cms = <<<MySQL_QUERY 
      CREATE TABLE IF NOT EXISTS cms (
      title VARCHAR(150), 
      bodytext TEXT, 
      date VARCHAR(100) 
) 
MySQL_QUERY; 

return mysql_query($make_cms); 

#lets create pages table if one does not exist 
$make_pages = <<<MySQL_QUERY2 
       CREATE TABLE IF NOT EXISTS pages (
       pid int NOT NULL AUTO_INCREMENT, PRIMARY KEY (pid), 
       title VARCHAR(150), 
       text TEXT, 
       date VARCHAR(100) 
) 
MySQL_QUERY2; 

return mysql_query($make_pages); 

} 

そして、そこの作成を担当するPHP関数です。 $ make_cmsは$ job_pages関数が何もせず、PAGESテーブルを作成することができない間に、$ make_cmsがその仕事をして実際にCMSと呼ばれるテーブルを作ります。

答えて

6

2番目のCREATE TABLE文を開始する前に、関数から戻ります。したがって、は決してに届きます。

// Don't return here! 
return mysql_query($make_cms); 

代わりに値を割り当てるだけFALSE場合を返す:

$success_cms = mysql_query($make_cms); 
// Return only on error of first table creation 
if (!$success) { 
    return FALSE; 
} 
// Then create the second table... 
+0

だから、私はそれらのすべてが実行されている彼らにものを返す必要がありますと言っています。私はそれをどうしようか見てみましょう:) –

+0

いいキャッチ...ええ、私はそれを逃した... – Umbrella

+0

@Cl '私は今追加したコードを見てください。 'return'は関数を残します。あなたが何か他のことをすることを期待していないときにだけ呼び出すことができます。 –

1

echo mysql_error()を使用してエラーを出力すると、それが表示されます。私はそれが予約語であるtextという名前のフィールドを持っているからだと思います。ティック( `)でフィールド名をエスケープしたり、予約語を避けてみてください。

#lets create pages table if one does not exist 
$make_pages = <<<MySQL_QUERY2 
      CREATE TABLE IF NOT EXISTS pages (
      `pid` int NOT NULL AUTO_INCREMENT, PRIMARY KEY (`pid`), 
      `title` VARCHAR(150), 
      `text` TEXT, 
      `date` VARCHAR(100) 
) 
MySQL_QUERY2; 
0

変更 "テキストTEXT、" TEXTをTEXT1し、それが動作するはずです! SQLは大文字と小文字を区別しないことに注意

1

クエリ自体はOKと思われるので、いずれかのページが既に存在するか、ユーザーが何らかの形でその特定のテーブルを作成する権限を持っていない可能性があります。

、クエリを実行するときにMySQLサーバが言ったことを示しているので、あなたのコードを変更することができます

result = mysql_query($make_pages); 

if (!$result) { 
    echo('Invalid query: ' . mysql_error()); 
} 
関連する問題