function dbUpdate($oRow, $sTable, $mPrimary = "id", $pdo = null) { $pdo = is_null($pdo) ? FlexiModelUtil::getInstance()->getXPDO() : $pdo; $bDebug = false; $aPrimary = !is_array($mPrimary) ? explode(",", $mPrimary . "") : $mPrimary; if ($bDebug) { echo __METHOD__ . ": primary:" . print_r($aPrimary, true) . "\n<br/>"; } $aWhere = FlexiModelUtil::parseSQLCondKeyValue($aPrimary, $oRow); $sFields = ""; $aParam = $aWhere["param"]; foreach ($oRow as $sField => $sValue) { $sFieldRaw = dbCleanName($sField); $sFieldName = FlexiModelUtil::parseSQLName($sField); $sFields .= empty($sFields) ? "" : ","; $sFields .= $sFieldName . "=:_update_" . $sFieldRaw; $aParam[":_update_" . $sFieldRaw] = $oRow[$sField]; } $sSQL = "UPDATE " . FlexiModelUtil::parseSQLName($sTable) . " SET " . $sFields . " WHERE " . $aWhere["sql"]; if ($bDebug) { echo __METHOD__ . ": sql:" . $sSQL . "\n<br/>"; } if ($bDebug) { echo __METHOD__ . ": param:" . print_r($aWhere["param"], true) . "\n<br/>"; } $oStatement = $pdo->prepare($sSQL, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY)); $mResult = $oStatement->execute($aParam); if ($mResult === false) { $aError = $oStatement->errorInfo(); throw new Exception("Query failed: " . $aError[2] . ":" . $sSQL . ":" . print_r($aParam, true)); } return $mResult; }