首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查表是新创建的还是没有在数据库中创建

检查表是新创建的还是没有在数据库中创建
EN

Stack Overflow用户
提问于 2014-02-08 08:05:20
回答 3查看 182关注 0票数 0

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

代码语言:javascript
运行
复制
 $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";

但这总是打印“表已经创建”,即使它不在数据库中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-08 08:18:24

CDbCommand::execute()返回受sql语句影响的行数。因为创建一个表并不会创建任何行,所以结果总是0CDbCommand::createTable()也是如此。因此,正如user1844933所提到的,您应该使用另一个查询来检查表是否存在:

代码语言:javascript
运行
复制
$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;

https://stackoverflow.com/a/1525801/428543代码

票数 1
EN

Stack Overflow用户

发布于 2014-02-08 08:16:56

我认为您应该为此使用CdbCommand::createTable。请参阅:http://www.yiiframework.com/doc/api/1.1/CDbCommand#createTable-detail

票数 0
EN

Stack Overflow用户

发布于 2014-02-08 08:22:04

有几种检查表是否存在的方法,因此:

代码语言:javascript
运行
复制
if(mysql_num_rows(mysql_query("SHOW TABLES LIKE 'table_name'"))==1) {
  echo "Table exists";
}

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

代码语言:javascript
运行
复制
$value = mysql_query('select 1 from `table_name`')

if($value !== FALSE)
{
   echo "Table exists";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21643596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档