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?我想检查它是否是新创建的。我想在那里写一个一次性动作。