我有一个在数据库中创建表的命令。我想知道是否创建了新表。下面给出的是我的命令。
$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语句影响的行数。由于创建表不会创建任何行,因此结果将始终为 0
。 CDbCommand::createTable()
也是如此。 。因此,正如 user1844933 提到的,您应该使用另一个查询来检查该表是否存在:
$result = $connection->createCommand("SHOW TABLES LIKE :table_name")->execute(array('table_name'=>$table_name));
$tableExists = $result > 0;
关于php - 检查表是否是新创建的或者不在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643596/