MySql - 列数略有不同的几个表

时间:2016-04-08 13:54:08

标签: mysql insert

我有几个表格略有不同的列。为简单起见,我说有两张桌子:

MYTABLE1:

UserId (int) (primary key)
Save (blob)

mytable2:

UserId (int) (primary key)
Save (blob)
Save2 (blob)

然后我在php中编写一个函数,它通常会插入一个新行。 $ db是数据库连接,$ saveTable将是" mytable1"或" mytable2" $ UserId将是一个类似2,3等的数字。

function InsertSaveTable($db, $saveTable, $UserId)
{
    $stmt = $db->prepare("INSERT INTO " . $saveTable . " (UserId, Save, Save2) VALUES (:UserId, '', '')");
    $stmt->execute(array(':UserId' => $UserId));
    $stmt->closeCursor(); // mysql_free_result equivalent
}

但是,此功能存在问题。即,Save2列仅存在于mytable2中。我只想将Save2设置为''仅当列存在时。我想在MYSQL中而不是php中执行此操作。 (我想在MYSQL中查看插入点处的表格,因为除了mytable1和mytable2之外还有更多的表格,之后会有更多的表格添加。)

这些表格要大得多,大约50%相同,只有一些差异,例如Save2的存在与否。我不希望表中包含大量未使用的列。

有没有办法为所有这些表编写一般的mysql INSERT语句,只将Save2设置为''必要时?

1 个答案:

答案 0 :(得分:1)

据我所知,没有。

在插入之前,你必须检查$ saveTable有哪些列。

就个人而言,如果可能的话,我会考虑在mysql中创建一个存储过程来执行检查并插入相关值。这样你就可以保持你的php简单,只需将所有变量传递给存储过程。