When using SELECT * FROM table WHERE Id IN ( .. ) queries with more than 10000 keys using PDO with prepare()/execute(), the performance degrades ~10X more than doing the same query using mysqli with prepared statements or PDO without using pr... 続きを読む
●PDO/MySQL(Windows版)の文字エンコーディング指定の不具合原因 前回のブログ「PHP5.3.6からPDOの文字エンコーディング指定が可能となったがWindows版では不具合(脆弱性)あり」にて、PHP5.3.6(本エントリ執筆時点での最新版)からPDOにてサポートされた文字... 続きを読む
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。 警告 PHP 5.1 以降、PDO はクラス定数を使用します。 それ以前のリリースでは、PDO_PARAM_BOOL の... 続きを読む
●ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション) PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェ... 続きを読む
PDOではなく、各DB固有の関数だと、「SELECT結果の件数」を返す関数として、MySQLなら、mysql_num_rows()MySQL拡張(MySQLi)なら、mysqli_stmt::num_rows()メソッドまたはmysqli_stmt_num_rows()関数PostgreSQLなら、pg_num_rows()関数があるんですが、PDOの場合... 続きを読む
ご訪問ありがとうございます。『INFINITY BLUE』は、WEB+DB開発の情報や仕事の実績などを紹介しています。 通常設定で下記のようにPDOStatement->fetch()を2回使用すると、エラーとなります。 コード: dsn = 'mysql:host=接続先;dbname=データベース名' $user ... 続きを読む
php, mysql少し前のお話なのだけど、せっかくなので書いておくことにする。MySQLのクエリログを見ていたら、 prepare に相当するログが一切流れていないことに気づいたので、PDO(mysql)でサーバサイドプリペアードステートメントが利用されていないんじゃないか... 続きを読む
PHP Data Objects 導入インストール/設定要件インストール手順実行時設定リソース型定義済み定数接続、および接続の管理トランザクションおよび自動コミットプリペアドステートメントおよびストアドプロシージャエラーおよびエラー処理ラージオブジェクト (LOB)... 続きを読む
はじめに PHP界隈では現在、PHP 4からPHP 5への移行が進んできており、ここ最近ではPHP 5の機能を活用したフレームワークも多く出てくるようになりました。 PHP 5は、PHP 4に比べオブジェクト指向のサポートや速度面での向上などが取り上げられる中、最も注目... 続きを読む
† [PDO][プリペアードステートメント][MySQL][文字エンコーディング]PDOとプリペアードステートメント PHP 5.2 もリリースされていまさらな感がありますが、PDO について書くように促されたので書いてみたいと思います。PHP 5.1 より、かつては PECL にあった... 続きを読む