我有几个表格略有不同的列。为简单起见,我说有两张桌子:
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设置为''必要时?
答案 0 :(得分:1)
据我所知,没有。
在插入之前,你必须检查$ saveTable有哪些列。
就个人而言,如果可能的话,我会考虑在mysql中创建一个存储过程来执行检查并插入相关值。这样你就可以保持你的php简单,只需将所有变量传递给存储过程。