【发布时间】:2015-08-11 14:08:08
【问题描述】:
我正在尝试使用以下方法更新我的 SQLite 数据库:
$insertion = $db->prepare("UPDATE roles SET ($set_string) WHERE entryDate = :entryDate AND name = :name");
$insertion->execute($assoc_data);
这里$set_string是一串属性和参数,就是我想要的。 print_r() 的 $set_string 产生:
name = :name,
entryDate = :entryDate,
development = :development,
adhoc = :adhoc,
mentoring = :mentoring,
documentation = :documentation,
codeReview = :codeReview,
meetings = :meetings,
learning = :learning,
waste = :waste,
workPrioritization = :workPrioritization,
management = :management,
applicationTraining = :applicationTraining
$assoc_data 是一个关联数组,其中包含我要更新数据库的所有数据:
Array (
[name] => Bobby Bob
[entryDate] => 2015-08-11
[development] => 0
[adhoc] => 0
[mentoring] => 0
[documentation] => 0
[codeReview] => 0
[meetings] => 0
[learning] => 0
[waste] => 0
[workPrioritization] => 0
[management] => 0
[applicationTraining] => 100
)
我收到以下错误:
异常:SQLSTATE[HY000]:一般错误:“(”附近的 1:语法错误
有人能指出错误是什么吗?我想我不太明白如何使用命名参数。
【问题讨论】:
-
我认为您的声明中不需要
(和) -
@fibono 你不能使用它们两次,这意味着独一无二。一个值只能使用一个唯一占位符一次。但是现在您在查询中使用了两次。
-
@fibono 阅读该评论:stackoverflow.com/questions/31944102/… ?
-
@fibono 仅供参考:重新打开问题并稍微清理一下您的问题。还添加了一个答案,只是为了给您一些文档链接,并稍微解释一下问题是什么以及如何解决它。