正在更新MySQLI中的参数


Updating parameters in MySQLI

我正在尝试更新mySql数据库中的一行。然而,我只想更新特定的参数,这些参数不是空的:

db->prepare("UPDATE table SET userFirstName = $userFirstName, userLastName = $userLastName WHERE xx = $xx");

这就是我现在所做的,但可能是userFirstName不需要更新,或者userLastName,。。。由于我有可能的价值观,我需要一种方式来表达这样的东西:

如果userLastName不是"null",那么即使更新。。。

MySQL足够聪明,可以决定是否更新行。如果它发现要更新的值与列中当前的值匹配,它将跳过重写,即使没有,也不应该关心它。我自己也有很多这样的优化困扰,我可以从经验中告诉你,它们不会给你带来任何好处。

您的代码存在更大的问题。你对prepare的使用毫无意义。您的SQL仍然易受攻击。搜索准备好的语句和mysql注入。

然而,要按原样回答这个问题,您应该使用对象作为数据库映射器。它们让你的生活轻松多了。基本上,这个想法是,您有一个代表表中一行的对象,然后它跟踪哪些属性被修改了,当您调用$object->save()时,它确切地知道要更新哪些字段。