タグ

dbとPDOに関するlax34のブックマーク (6)

  • PDOはデフォルトではエラー出力をしないです | Unskilled?

    ハマりにハマる PDOでMySQLを扱っていたのですが、あるSQLがいっこうに受け付けてもらえません。 エラーも出ないのでSQL文が間違っているわけでもなさそうなのですが…。 不具合かなと思い、いろいろ調べているとPDOはデフォルトでエラーを吐かないという衝撃の事実を知りました。 なんだってーーーー!!! PHP.iniの設定でdisplay_Errorをyesにしていたので出力されるものだと思っていました。 セキュリティを考えるとエラーを吐かない方がいいのはわかっているつもりでしたが、設定は別なんですね。 PDOでは属性を設定することで、エラーの挙動や出力を変更することが可能です。 ちょっとした説明 PDOの属性設定はPDO::setAttribute()で行います。エラー以外にもさまざまな属性が存在しています。 属性の設定は「どの属性の設定か」の指定に続き、「その属性の設定」を行います

    PDOはデフォルトではエラー出力をしないです | Unskilled?
    lax34
    lax34 2019/12/04
  • DAOの悪夢 - PHPでデータベースを扱う(1)

    最近、昔の自分が書いたコードをメンテしているのですが、何というか、「ええい、誰じゃこのコードを書いたのは!!」と叫んでは「…4年前の俺でした…」とセルフツッコミを繰り返しています。すごく読みにくいコードで、ストレスたまりまくりです。そのため、「今ならどう書くか」をよく考えました。ちょっと長くなるかもしれませんが、アンチパターンとして解説したいと思います。 DAOパターンについて 私が々としてメンテしているコードですが、データベースとのやり取りを行うためのクラスです。当時意識していませんでしたが、改めて見ているとDAOパターンを再現しているものでした。 DAO(Data Access Object)とはデザインパターンの一種で、データベースへのアクセスロジックを集約したクラスのことです。有名なGang of Fourによる23種の基デザインパターンには直接含まれていませんが、Facade

    DAOの悪夢 - PHPでデータベースを扱う(1)
  • PHP 5.5 で mysql 拡張モジュールが非推奨になり、将来において WordPress を筆頭にさまざまな CMS のアップグレード作業が必要になります

    PHP 5.5 で mysql 拡張モジュールが非推奨になり、E_DEPRECATED エラーが表示されるようになりました。将来の PHP のバージョンで削除されます。 mysql 拡張モジュールに依存する CMS を使ってサイトを運用している場合、将来、運用サーバーに導入されている PHP のバージョンの切り替えに備えて、 mysqli もしくは PDO に対応した CMS のバージョンへのアップグレードするか、別の CMS やウェブサービスに切り替える必要があります。 多くの PHP 製の CMS が共有ホスティングにインストールされており、共有ホスティングは比較的古い PHP のバージョンのサポートを続ける傾向にありますが、古い PHP のバージョンを使い続ける場合、PHP のバグやセキュリティの未対応、より新しい PHP のバージョンを最小バージョンとするライブラリや CMS を導

    PHP 5.5 で mysql 拡張モジュールが非推奨になり、将来において WordPress を筆頭にさまざまな CMS のアップグレード作業が必要になります
  • PDOでサクサクDB開発

    はじめに PHP界隈では現在、PHP 4からPHP 5への移行が進んできており、ここ最近ではPHP 5の機能を活用したフレームワークも多く出てくるようになりました。 PHP 5は、PHP 4に比べオブジェクト指向のサポートや速度面での向上などが取り上げられる中、最も注目すべき点であるデータベースへのアクセスを抽象化したレイヤーとしてPDOが登場しました。 今回はそのPDOに注目し、サンプルを交えてPDOの使い方を紹介します。 対象読者 PHP 5を使ったことがある方 以前PEAR::DBなどを用いてデータベースを使ったアプリケーションを作成したことのある方 必要な環境 PDOはPHP 5.1から標準で導入されるようになりました。Windows/UNIXを問わず利用することができます。よってPHP 5.1の環境と、PDOの動作に必要なデータベースの構築を行ってください。 PDOとは PDO(

    PDOでサクサクDB開発
  • ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2010年7月1日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり PHPのデータベース・アクセス・ライブラリPDOは、DB接続時の文字エンコーディング指定ができないため、文字エンコーディングの選択によっては、プレースホルダを使っていてもSQLインジェクション脆弱性が発生します。 追記(2011/06/19) ここに来て急にブクマが追加されはじめていますが、このエントリを書いてから状況が改善しています。PHP5.3.6(2011/03/17)にて、PDOでもデータベース接続の文字エンコーディングを指定できるようになりました。この版で、UNIX版のPHPでは解決しましたが、Win

    ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)
  • PDO for PHP 4: PDO database abstraction interface for PHP 4 - PHP Classes

    This package implements the PDO database abstraction interface that is compatible with PHP 4. PDO is an extension introduced in PHP 5 that provides a common interface to several types of relational databases. Since PDO only became standard extension with PHP 5.1 and very few hosting companies provide PHP 5.1 servers, the idea of this package is to provide an implementation of the PDO API that work

  • 1