检查数据库中是否新创建了表

时间:2014-02-08 08:05:20

标签: php mysql database yii

我有一个在数据库中创建表的命令。我想知道是否创建了新表。下面给出的是我的命令。

 $command = $connection->createCommand(
     "
        CREATE TABLE IF NOT EXISTS `".$tbName."` LIKE `question`;
        INSERT INTO `".$tbName."` SELECT * FROM `question`;

     "
    )->execute();
    echo $command;
   if($command!==0){
    echo "Success";}
   else echo "Table already created";

但即使数据库中没有表格,也会打印“已创建的表格”。

3 个答案:

答案 0 :(得分:1)

CDbCommand::execute()返回受sql语句影响的行数。由于创建表不会创建任何行,因此结果始终为0CDbCommand::createTable()也是如此。因此,如用户1844933所述,您应该使用另一个查询来检查表是否存在:

$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;

来自https://stackoverflow.com/a/1525801/428543的代码

答案 1 :(得分:0)

我认为你应该为此使用CdbCommand :: createTable。看到: http://www.yiiframework.com/doc/api/1.1/CDbCommand#createTable-detail

答案 2 :(得分:0)

有几种方法可以检查表是否存在,所以:

if(mysql_num_rows(mysql_query("SHOW TABLES LIKE 'table_name'"))==1) {
  echo "Table exists";
}

另一种方法是从表中选择:

$value = mysql_query('select 1 from `table_name`')

if($value !== FALSE)
{
   echo "Table exists";
}