トップ  > メモ一覧  > カテゴリ「PDO」の絞り込み結果 : 6件

6件中 1 〜 6 表示  1 

No.4005【引用】PDO::FETCH_KEY_PAIR (integer)

PDO::FETCH_KEY_PAIR (integer)
    最初のカラムの値をキー、それ以降のカラムの内容を値として持つ連想配列形式でデータを取得します。

http://document.kappe.ne.jp/php/20071125/ref.pdo.html

引用元

更新:2011/08/17 18:44 カテゴリ: PHP  > PDO ▲トップ

No.1991 PDO 基本


$user = 'root';
$pass = '';
try {
   $dbh = new PDO('mysql:host=localhost;dbname=tag320', $user, $pass);
} catch (PDOException $e) {
   print "エラー!: " . $e->getMessage() . "
";
   die();
}
$sql = "select * from community_member where member_id=3 and position <> 'pre'";
$sth = $dbh->prepare($sql);
$sth->execute();

$result = $sth->fetchAll();
var_dump($result);
更新:2010/01/12 17:20 カテゴリ: PHP  > PDO ▲トップ

No.1743 文字コード指定

$stmt = $pdo -> query("SET NAMES utf8;");
更新:2009/11/17 10:21 カテゴリ: PHP  > PDO ▲トップ

No.1657 例1SQLSTATEコードを取得する

例1 SQLSTATE コードを取得する

<?php
/* エラーを発生させる -- BONES テーブルは存在しない */
$dbh->exec("INSERT INTO bones(skull) VALUES ('lucy')");

echo 
"\nPDO::errorCode(): ";
print 
$dbh->errorCode();
?>

上の例の出力は以下となります。

PDO::errorCode(): 42S02
更新:2009/10/22 14:18 カテゴリ: PHP  > PDO ▲トップ

No.1607 MySQL&hArr;PHPベンチマーク(mysql_・PDO・mysqli)+おまけ

MySQL⇔PHPベンチマーク(mysql_・PDO・mysqli)+おまけ
ご無沙汰です。
ちょっと思いつきでやってみました。


create table testtable
(
  code varchar(10),
  name varchar(10),
  PRIMARY(code)
)

| code | name |
|00001|hoge  |
|    …          |
|10000|hoge  |
というテスト用のデータを用意。

SQLは
 select name from testtable where code='09999'
PRIMARYとしてINDEXされているcodeカラムを対象に、1万件のデータを検索してたった1行×1カラムのデータを探します。

(一般的なベンチの手法とはかなり違うと思いますが)
DB接続の時間は含まずSQLを実行して、結果をフェッチして、その結果をvar_dumpするところまでの時間を計りました。
私の場合、WEBアプリでの利用が目的であって、実際にデータを取り出して使い回せる状態にするところまでDBアクセス層のお仕事だと思っているので。

また、自鯖ですがコマンドラインでなくApacheモジュール版PHPをブラウザから呼んで実行させています。
数字はPHPのmicrotime関数の出力を処理したもの。10回やった平均です。
PHP全体・鯖全体の負荷の問題もあるので数値としては全然正確じゃないと思いますが、一応の速度比較にはなるかと。
■結果
mysql関数:73.44マイクロ秒
PDO:113.49マイクロ秒
mysqli(クラス):51.28マイクロ秒
???:28.08マイクロ秒 ←



「???」って何だと思います?
実は、codeをキーに、nameを値に持つ連想配列を作って、$array['09999']が存在するかどうか調べて(isset)、存在すれば返す。という古典的な(?)方法のベンチです。
1万件の配列をメモリに読み込む方が、DBに問い合わせ投げるより早い!というのが意外でした。
(くだらなくてすみません;;)

今回扱いたいモノが、更新頻度があまり高くなく、読み込み頻度が圧倒的に高いデータなもので、こんな比較をしてみました。
更新のほうの処理を書くのがちと面倒ですが、配列ベースで実装しようかな、という結論に至りました。

引用元

更新:2009/10/11 06:03 カテゴリ: PHP  > PDO ▲トップ

No.1606 PDOで複数のSQL文を連続実行するとエラーになる理由

PDO で複数の SQL 文を連続実行するとエラーになる理由

PDO を使って、こんな感じのコードを書いていた。

$dbh = new PDO($dsn);

$sql = "SELECT * FROM table1 WHERE id='$id'";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$row1 = $stmt->fetch();

$sql = "SELECT * FROM table2 WHERE id='$id'";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$row2 = $stmt->fetch();

ところが、実行すると以下のようなエラーが出て止まってしまう。

Fatal error: Call to a member function execute() on a non-object.

エラーメッセージを見ると、 1回目でなく2回目の $stmt->execute(); でエラーになっている。 スクリプトの他の箇所では SQL 文をいくつも連続して実行できているのに、 なぜかここの箇所だけエラーになる。

試行錯誤して、 $stmt->fetch(); の後に $stmt = null; を追加してみたら、 一応動くようにはなった。 しかし、なぜそんな処理が必要になるのか、理由がさっぱり分からない。

そうしてさらに調べた結果、 PDOStatement::closeCursor のマニュアル に答えが書いてあった。 要するに、最後まで fetch しきらずに次の SQL 文の実行に移る場合は、 $stmt->closeCursor(); を実行する必要があるということか。

引用元

更新:2009/10/11 06:00 カテゴリ: PHP  > PDO ▲トップ
6件中 1 〜 6 表示  1 

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

Python

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0