Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查表是否是在数据库中新创建的_Php_Mysql_Database_Yii - Fatal编程技术网

Php 检查表是否是在数据库中新创建的

Php 检查表是否是在数据库中新创建的,php,mysql,database,yii,Php,Mysql,Database,Yii,我有一个在数据库中创建表的命令。我想知道是否创建了一个新表。下面是我的命令 $command = $connection->createCommand( " CREATE TABLE IF NOT EXISTS `".$tbName."` LIKE `question`; INSERT INTO `".$tbName."` SELECT * FROM `question`; " )->execute(); ech

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

 $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";

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

我认为您应该使用CdbCommand::createTable进行此操作。见: 返回受sql语句影响的行数。由于创建表不会创建任何行,因此结果总是
0
。同样的情况也会发生。因此,正如user1844933所提到的,您应该使用另一个查询来检查表是否存在:

$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 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";
}

为什么你不能用另一个qry检查tbl是否存在,就像从tblname中选择1一样;它会给出正确或错误的结果…这将始终给我正确的na?我想检查它是否是新创建的。我想在那里写一个一次性动作。