MySQLi”という具合に検索すると、結構な数の「PDOとMySQLiの違い」記事がヒットするわけです。多くの場合は「こういう違いがあるよ」という結論なので、自分がいまどっちを使ったらいいのか?という情報は手に入らないわけですね。セキュリティ的な観点で「どっちとかじゃねえんだよ」という話もあるわけですが、これはこれでまた別の話なので、ここでも横に置きます。いやセキュリティ問題を横に置くわけじゃありませんよ。話題として今回そこを主眼にしていない、という意味です。ただでさえ文章が長いと言われているのに、際限なく長くなりますからね。フレームワークを使うことを選択すべきだとは思いますが、どうにも素のPHPで何か書かないといけない、という状況になったときに、あまり用途別に使い分ける根拠がリファレンスからは見いだせないのですね。実際には、リファレンスに明記されていない挙動の違いがあり、ハマるとえらいことになります。それほど汎用的なトラップではないのですが、まんまとしてやられたので、メモとして書いてみます。MySQLの特定のテーブルのレコードを削除したい件数が結構多いのでDELETE文一発ではマズい(DBのパフォーマンスに影響が出る環境である)PHPでバッチを書いてちょっとづつ処理しようはい。「サーバスペック上げればDELETE文一発で済むんじゃないですか?」という幸福な世界に生きておられる方はもう本当にそれが正しいです。切断sleepループOutということをしようというわけです。ここでDB接続ループInSQL発行sleepループOut切断としないのは、DB接続/切断のオーバーヘッドは承知の上で、1本とはいえDB接続を長時間占有したくない、という、涙ぐましい思いからのものです。この処理をPDOで書くとしましょう。null;というように、PDOオブジェクト変数に対して明示的にnullを代入することで切断するとされていますね。http://php.net/manual/ja/pdo.connections.phpですので、newとNULL代入をループ中で繰り返すことになります。......で、やってみるとわかるんですが、数百回くらい回したところで、SQLエラーが出ます。connections」です。「?」となりますよね?だって接続切ってるじゃん、と。connections』が出たらMySQLサーバの接続数設定を増やせばいいんです!」と言う人がいましたが、いやいやいや、という話ですよ。増やせばいいという問題じゃないし、上げた上限をさらに超えたらどうするの、っていう話ですからね。いうことでPHPリファレンスに戻りましょう。参照されていないことを保障することでオブジェクトを破棄する必要があります。