本文整理汇总了PHP中ADODB_mysqli::BeginTrans方法的典型用法代码示例。如果您正苦于以下问题:PHP ADODB_mysqli::BeginTrans方法的具体用法?PHP ADODB_mysqli::BeginTrans怎么用?PHP ADODB_mysqli::BeginTrans使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ADODB_mysqli
的用法示例。
在下文中一共展示了ADODB_mysqli::BeginTrans方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: save
public function save($update_system_records = false)
{
$row = $this->unBind();
unset($row['id']);
unset($row['dtlastmodified']);
$this->db->BeginTrans();
// Prepare SQL statement
$set = array();
$bind = array();
foreach ($row as $field => $value) {
$set[] = "`{$field}` = ?";
$bind[] = $value;
}
$set = join(', ', $set);
try {
//Save zone;
if ($this->id) {
if ($update_system_records) {
$this->updateSystemRecords();
}
// Perform Update
$bind[] = $this->id;
$this->db->Execute("UPDATE dns_zones SET {$set}, `dtlastmodified` = NOW() WHERE id = ?", $bind);
//TODO:
if ($update_system_records) {
$this->db->Execute("UPDATE dns_zones SET status=?, `dtlastmodified` = NOW() WHERE id = ?", array($this->status, $this->id));
}
} else {
// Perform Insert
$this->db->Execute("INSERT INTO dns_zones SET {$set}", $bind);
$this->id = $this->db->Insert_ID();
if ($update_system_records) {
$this->updateSystemRecords();
$this->db->Execute("UPDATE dns_zones SET status=?, `dtlastmodified` = NOW() WHERE id = ?", array($this->status, $this->id));
}
}
if ($this->updateRecords) {
$this->db->Execute("DELETE FROM dns_zone_records WHERE zone_id=? AND issystem='0'", array($this->id));
foreach ($this->records as $record) {
//UNIQUE KEY `zoneid` (`zone_id`,`type`(1),`value`,`name`)
$this->db->Execute("\n INSERT INTO dns_zone_records\n SET `zone_id` = ?,\n `type` = ?,\n `value` = ?,\n `name` = ?,\n `issystem` = '0',\n `ttl` = ?,\n `priority` = ?,\n `weight` = ?,\n `port` = ?\n ON DUPLICATE KEY UPDATE\n `issystem` = '0',\n `ttl` = ?,\n `priority` = ?,\n `weight` = ?,\n `port` = ?\n ", array($this->id, $record['type'], $record['value'], $record['name'], (int) $record['ttl'], (int) $record['priority'], (int) $record['weight'], (int) $record['port'], (int) $record['ttl'], (int) $record['priority'], (int) $record['weight'], (int) $record['port']));
}
}
} catch (Exception $e) {
$this->db->RollbackTrans();
throw new Exception("Cannot save DBDNS zone. Error: " . $e->getMessage(), $e->getCode());
}
$this->db->CommitTrans();
try {
//$this->saveInPowerDns();
} catch (Exception $e) {
Logger::getLogger("DNS")->fatal("Unable to save data in PowerDNS db: {$e->getMessage()}");
}
}
示例2: save
/**
* Saves price
*
* @param PriceHistoryEntity $price The PriceHistoryEntity with details set.
* @throws \InvalidArgumentException
* @throws \ADODB_Exception
*/
public function save(PriceHistoryEntity $price)
{
if (!isset($price->platform) || !isset($price->cloudLocation)) {
throw new \InvalidArgumentException(sprintf("Both platform and cloudLocation properties must be set"));
}
if (!isset($price->applied)) {
$price->applied = new \DateTime('now', new \DateTimeZone('UTC'));
} else {
if (!$price->applied instanceof \DateTime) {
$price->applied = new \DateTime($price->applied, new \DateTimeZone('UTC'));
}
}
if (!$price->priceId) {
//Trying to find if the price already exists on this day
$found = PriceHistoryEntity::findOne([['platform' => $price->platform], ['url' => $price->url ?: ''], ['cloudLocation' => $price->cloudLocation], ['accountId' => $price->accountId ?: 0], ['applied' => $price->applied->format('Y-m-d')]]);
if ($found) {
$price->priceId = $found->priceId;
}
}
if (!$price->priceId) {
$bNew = true;
$price->priceId = \Scalr::GenerateUID();
} else {
$bNew = false;
}
$sId = "`price_id` = " . $price->qstr('priceId');
$this->cadb->BeginTrans();
try {
$this->cadb->Execute("\n " . ($bNew ? "INSERT" : "UPDATE") . " " . $price->table() . "\n SET " . ($bNew ? $sId . "," : "") . "\n platform = ?,\n url = ?,\n cloud_location = ?,\n account_id = ?,\n applied = ?,\n deny_override = ?\n " . ($bNew ? "" : "WHERE " . $sId . " LIMIT 1") . "\n ", [$price->platform, $price->url ?: '', $price->cloudLocation, $price->accountId ?: 0, $price->applied->format('Y-m-d'), $price->denyOverride ? 1 : 0]);
//Removes previous values
if (!$bNew) {
$this->cadb->Execute("DELETE FROM `prices` WHERE price_id = " . $price->qstr('priceId'));
}
$stmt = "";
foreach ($price->getDetails() as $priceEntity) {
if ($priceEntity instanceof PriceEntity) {
$stmt .= ", (" . $price->qstr('priceId') . ", " . $priceEntity->qstr('instanceType') . ", " . $priceEntity->qstr('os') . ", " . $priceEntity->qstr('name') . ", " . $priceEntity->qstr('cost') . ")";
} else {
throw new \InvalidArgumentException(sprintf("Details should contain collection of the PriceEntity objects. %s given.", gettype($priceEntity)));
}
}
if ($stmt !== '') {
$this->cadb->Execute("REPLACE `prices` (`price_id`,`instance_type`, `os`, `name`, `cost`) VALUES " . ltrim($stmt, ','));
}
$this->cadb->CommitTrans();
} catch (\Exception $e) {
$this->cadb->RollbackTrans();
throw $e;
}
}