有人可以帮我看看有什么与此设置PDO数据库抽象
我建@sql查询下面这样的功能会错。 额外的引号是在条件数组中设置的。
$sql .= " WHERE $field = \"$value\"";
pdo update函数像这样循环条件数组。
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);
感谢,理查德
谢谢,这很有帮助,我已经在一个函数中构建了4个循环,因为我对此不太熟悉。但我必须仔细观察一下。 – Richard 2009-11-13 20:30:14
你可以通过使用'array_map()'和'join()'来代替所有这些循环来加强你的代码。 – 2009-11-13 20:36:53
谢谢,你在哪里更快,我从来没有使用过这些函数,所以我会看看这个也 – Richard 2009-11-13 20:50:29