我有一个命令来在数据库中创建表。我想知道是否创建了一个新表。下面是我的命令。
$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";
但这总是打印“表已经创建”,即使它不在数据库中。
发布于 2014-02-08 08:18:24
CDbCommand::execute()
返回受sql语句影响的行数。因为创建一个表并不会创建任何行,所以结果总是0
。CDbCommand::createTable()
也是如此。因此,正如user1844933所提到的,您应该使用另一个查询来检查表是否存在:
$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;
发布于 2014-02-08 08:16:56
我认为您应该为此使用CdbCommand::createTable。请参阅:http://www.yiiframework.com/doc/api/1.1/CDbCommand#createTable-detail
发布于 2014-02-08 08:22:04
有几种检查表是否存在的方法,因此:
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";
}
https://stackoverflow.com/questions/21643596
复制相似问题