【发布时间】:2009-11-13 19:16:31
【问题描述】:
谁能帮我看看这个设置出了什么问题
我像这样在下面的函数中构建@sql 查询。 额外的引号设置在条件数组中。
$sql .= " WHERE $field = \"$value\"";
pdo 更新函数像这样循环条件数组。
if (!is_null($conditions))
{
$cond = ' WHERE';
$obj = new CachingIterator(new ArrayIterator($conditions));
foreach($obj as $k=>$v)
{
$cond .= " $k=$v";
$cond .= $obj->hasNext() ? ' AND' : '';
}
}
我要说的是,如果不在值周围添加斜线作为引号,我就无法构建具有值的数组。 否则抛出的 sql 错误是它是未知列。
我还有什么可以做的吗?
有人可以给我一些意见吗?
编辑:其余关闭更新功能
我可以在哪里绑定条件数组的值并拥有它们 也被执行?正如我现在所看到的,只有值数组被执行? 我需要循环两个数组然后合并两个数组吗?
$obj = new CachingIterator(new ArrayIterator($values));
$db = db::getInstance();
$sql = "UPDATE $table SET \n";
foreach( $obj as $field=>$val)
{
$sql .= "$field= :$field";
$sql .= $obj->hasNext() ? ',' : '';
$sql .= "\n";
}
$sql .= $cond ;
$stmt = $db->prepare($sql);
// bind de params
foreach($values as $k=>$v)
{
$stmt->bindParam(':'.$k, $v);
}
$stmt->execute($values );
谢谢,理查德
【问题讨论】: