你可以在你的控制器(或部件)
// Initiate PDO connection
$this->_pdocon = $this->WhateverYourModel->getDataSource()->getConnection();
try {
// Select Query
$company = "What";
$stmt = $this->_pdocon->prepare('SELECT * FROM `agents` WHERE `company` LIKE :company LIMIT 2');
$stmt->bindValue(':company', $company, PDO::PARAM_STR);
// Start transaction
$this->_pdocon->begin();
// Loop through the events
if($stm->execute()) {
while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$stmt2 = $this->_pdocon->prepare("INSERT INTO `company`
(`id`, `name`, `identityno`, `modified`, `created`)
VALUES
(NULL, :name, :identityno, NOW(), NOW())");
$stmt2->bindValue(':name', $row['name'], PDO::PARAM_STR);
$stmt2->bindValue(':identityno', $row['id'], PDO::PARAM_INT);
$stmt2->execute();
}
}
// Commit transaction
$this->_pdocon->commit();
// Get last insert Id
$row_id = $this->_pdocon->lastInsertId();
var_dump($row_id);
} catch (PDOException $e) {
// Rollback transaction
$this->_pdocon->rollback();
echo "! PDO Error : " . $e->getMessage() . "<br/>";
}
这是我结束-了使用。使用PDO已解决数千个问题。现在系统速度很快,没有内存排气错误。在我的问题中,我不能把所有问题,错误都归咎于我。直接回答,而不是试图在这里改变问题是很好的!
为什么要绕过使用CakePHP查询数据库的方法?有什么特别的你不能做?使用像Cake这样的框架的一个主要好处是您不必担心SQL注入,因为框架已经为您处理了这个问题! – drmonkeyninja
数学计算必须在'select'查询中,而cakephp find()不能实现。 * - 我不确定这是否可行,它一个接一个地给了我错误。如果我使用'模型',系统花费很长时间来加载或有时会出现内存耗尽问题。但是如果我使用row sql,请快速回复。表中有数百万的数据。 – Sadee
'find()'应该可以在计算中正常工作。您可以在选择的查询中使用SQL方法。你正在使用哪个版本的CakePHP?也许你应该问如何在你的CakePHP查询中使用计算,而不是绕过Cake已经存在的保护来防止SQL注入! – drmonkeyninja