这个问题正在让我发疯...
首先是免责声明,我几乎没有正式的编程培训。我绊倒了。
我收到一般错误:2014年错误;起初它是一个特定的查询(在类中建立),警告取决于我在实例化对象的代码中的位置。我继续将每个查询更改为fetchAll,然后在fetchAll不起作用后关闭每个查询的光标。现在有两个违规查询。这是一个复制和粘贴:
(更新代码):
$sql = "select initial_state from source_nodes where id = :id";
$core = Core::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindParam(':id', $allSources->id[$id], PDO::PARAM_INT);
if ($stmt->execute()) {
$row = $stmt->fetchAll();
$stmt->closeCursor();
foreach($row as $i=>$value){
$allSources->state[$id] = $row[$i]['initial_state'];
}
}
不确定是否重要,但警告会在'if'上发出警告。据我所知,每个'fetch'现在都是'fetchAll'并包含'closeCursor'。
连接设置如下:
$this->dbh = new PDO($dsn, $user, $password, array(
PDO::ATTR_PERSISTENT => true,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY =>true
));
建议?
答案 0 :(得分:2)
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
是修复错误的灵丹妙药,你甚至不打算提供哪些文字,假设读者想要用心数知道每一个错误。
虽然只是机械地将所有fetch()
来电替换为fetchAll()
,但
您编辑过的代码有两件事。
答案 1 :(得分:0)