akkun_choi pedia
mindiaakkun_choi pedia見出し語

PDO

akkun_choi · 2009-04-27 更新

とにかく動かす

>|php|
<?php
$pdo = new PDO("mysql:host=localhost;dbname=test",
'username', 'password');
$stmt = $pdo->prepare("select * from hoge where type = ?");
var_dump($stmt->execute(array(2)));
var_dump($stmt->fetchAll());

||<

prepareもqueryも複数クエリ実行できるんだ…。今さら知った。
mysql_query()かなんかは無理だった気がする

The pgsql driver is not currently installed

PDOPDO用のエクステンションがある。

php_pgsql.dllじゃなくて、php_pdo_pgsql.dllをロードしなければならない

>|php|
$pdo = new PDO("mysql:host=localhost; dbname=mindia",
"username", "password");
||<

SQLSTATE[HY000]

このエラー

SQLSTATE[HY000] General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.

これでOK

#$this->_connection->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

そもそも、一回のqueryメソッドで複数クエリを投げた後に、またqueryするとこのエラーがでる。複数クエリを投げた後になんか残るんだろうか?複数クエリを投げなければよい。(だけどそれも困る…)

関連する見出し語