我有一个在数据库中创建表的命令。我想知道是否创建了新表。下面给出的是我的命令。
$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";
但即使数据库中没有表格,也会打印“已创建的表格”。
答案 0 :(得分:1)
CDbCommand::execute()
返回受sql语句影响的行数。由于创建表不会创建任何行,因此结果始终为0
。 CDbCommand::createTable()
也是如此。因此,如用户1844933所述,您应该使用另一个查询来检查表是否存在:
$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;
答案 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";
}