我有一个 MySQL 数据库,其中有一个表(邮件),其中包含以下列:ID、内容、日期和标题。我想知道是否有一个选项可以检查表是否存在,如果存在则更改表,例如如果我想添加一列。我找到的唯一可能的解决方案是这样的:
$sql=mysql_query(
"SELECT something FROM Mail");
if (!$sql){
mysql_query("ALTER TABLE Mail ADD Test VARCHAR(150) DEFAULT NULL");
}ELSE{
mysql_query("CREATE TABLE if not exists `Mail` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Content` longtext,
`Datum` varchar(15) DEFAULT NULL,
`Titel` varchar(150) DEFAULT NULL,
`Test` varchar(150) DEFAULT NULL,
PRIMARY KEY (`ID`)
) ");
}
所以我想知道是否有更简单的方法来做到这一点,甚至可能在 1 个查询中(可能没有)?如果有人知道更好/更简单的方法来做到这一点那就太好了!
我知道 Mysql_ 已被弃用,但我很快就会切换到 PDO!
最佳答案
尝试更改不存在的表将引发错误。这就足够了:
$res = mysql_query('ALTER TABLE Mail...');
if (!res) {
mysql_query('CREATE TABLE Mail...');
}
或者你可以变得更加黑客:
mysql_query('CREATE TABLE Mail IF NOT EXISTS...'); // does nothing if table already exists
mysql_query('ALTER TABLE Mail ADD Test...'); // does nothing if the column already exists
我忍不住要提一下这段代码的味道真的很糟糕。我不建议对您的逻辑进行严格修改的唯一情况是,如果这仅与自动安装/升级过程相关。
关于php - 如果表不存在则创建表,否则修改表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16980708/