2011-07-19 9 views
0

今日は非常に挫折してこの作業をしようとしています。アレイからdbテーブルを自動作成する方法

my phpスクリプトの先頭付近に作成する必要があるテーブルが20個あります(存在しない場合)。

明白な方法は、SQLクエリCREATE IF NOT EXISTですが、データベースを作成するときだけ、データベースが存在するかどうかを確認するために20回クエリを実行する必要はありません。

私はテーブル配列をループしてから、すべてのデータベースからSHOW ALL FROMデータベースを使ってテーブル名を比較しようとしましたが、うまくいきませんでした。これまでの私のコードです

$result=$db->query("SHOW TABLES FROM database"); 
$numrows=mysql_num_rows($result); 

echo $numrows.' tables'; 

$found=null; 

foreach ($table as $name => $fields) { 
    while ($showall=mysql_fetch_array($result)) { 
     if ($name==$showall[0]) { 
      unset($found); 
     } 
    } 

      if (isset($found)) { 
       echo 'Table '.$name.' does not exist, creating...<br />'; 

       $db->query("CREATE TABLE ".$name." (".$fields.")"); 
      } else { 
       echo 'Table '.$name.' exists<br />'; 

       //$db->query("CREATE TABLE ".$name." (".$fields.")"); 
      } 

(バージョン4、私はそれが動作するように取得しようとする時間後、数えます)。ご覧のとおり、ループ内でループし、一致するものが見つかると変数の設定を解除します。シンプルに聞こえますが、それはうまくいくはずですが、そうではありません。

答えて

0

あなたは$ found変数を2回宣言するだけで、両方ともnullと宣言されています。そのため、コードは決して入力されません

if (isset($found)) { 
       echo 'Table '.$name.' does not exist, creating...<br />'; 

       $db->query("CREATE TABLE ".$name." (".$fields.")"); 
      } 

多分問題がありますか?

+0

真。しかし、変数を1に設定し、その変数が設定されているかどうかを尋ねてみました。私が投稿したこの$見つかった例は、それを動作させるための4番目の試みの3分の1でした。 – Jared

関連する問題