有人可以幫我看看有什麼與此設置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