【发布时间】:2013-12-31 11:30:24
【问题描述】:
我正在尝试将一条记录更新到我不提前知道要更新的字段、要更新的字段或这些字段将包含什么值的表中 - 其中一些将被设置为空。
我选择记录之前的记录和更改后的记录之间的变化,而不是简单地更新整个记录(考虑到任何时候只有一个字段可能会发生变化,这样做似乎毫无意义)。
这些记录的更改保存在我的$changes 数组中,其中键是字段名称,值是字段需要保存的新值。我曾尝试研究使用问号表示法来记录未知值,但仅此一项并不能说明可能更新多少字段的差异,而且我只看到此表示法与选择查询一起使用。
这是我目前所得到的:
$dbh->prepare("UPDATE `missions` SET ??? WHERE `mission_id`=:mission_id");
$dbh->bindParam(':mission_id', $mission_id); // Mission ID is constant and WILL NOT change
我知道我可以简单地循环遍历我的数组来绑定参数,但我不知道如何将我的更改值数组转换为问号所需的符号。想法和想法?
【问题讨论】:
-
你需要使用准备好的语句吗?否则我只会将查询创建为字符串并直接执行。
-
@MatthiasDunkel 我的印象是不使用准备好的语句打开了 SQL 注入的大门,如果有机会,我想阻止这种情况。
-
@MatthiasDunkel 每个人都需要使用准备好的语句。
-
@YourCommonSense 您不应该总是使用准备好的语句。也有例外,可能是这样。这取决于数据的来源以及您是否信任来源...