php - 检查表是否是新创建的或者不在数据库中

标签 php mysql database yii

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

 $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::execute()返回受sql语句影响的行数。由于创建表不会创建任何行,因此结果将始终为 0CDbCommand::createTable() 也是如此。 。因此,正如 user1844933 提到的,您应该使用另一个查询来检查该表是否存在:

$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;

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

关于php - 检查表是否是新创建的或者不在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643596/

相关文章:

javascript - 选中复选框时显示隐藏字段?

php - 如果值不存在,如何在左连接字段上返回 null

mysql - 从 Controller 返回查询而不是值的数据库查询

mysql - 为 MySQL(或任何 RDB)创建用户表

php - MySQL Fetch 在单个查询中连接具有多行的多个表

php - 交响乐2 : Save json and display value

php - 空($_POST) === FALSE 不能正常工作

PHP 购物车多个值在一个 id

mysql - 对 MySQL 中获取锁的方式进行排序

mysql - 显示两个日期之间的日期列表?