如何从数组中自动创建数据库表

时间:2011-07-19 12:22:19

标签: php mysql database

今天非常沮丧,试图让这个工作。

如果不存在,我需要在我的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,我估计,经过数小时试图让它工作)。如您所见,我在循环内循环并在找到匹配时取消设置变量。这听起来很简单,它应该可以工作,但事实并非如此。

1 个答案:

答案 0 :(得分:0)

您只是将$ found变量声明两次,并且两次都声明为null。因此,您的代码永远不会进入

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

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

也许有问题?