- 彼らは自分たちで仕事をやめることは決してないので、あなたは世界中にずっといます!
- はい、これを行うにはいくつかの方法があります。
- はい。ただし、万能のソリューションはありません。すべての状況は異なり、特定の状況に適切なものがすべての状況に適切であるとは限りません。
まず、古いext /mysqlはPHP5.5.0で非推奨になりましたが、拡張機能自体が最終的にPHP PECLリポジトリに移動されるため(削除するときに)、完全に機能しなくなることはありません。ただし、私たちはまだそこにいないので、そのバージョンのPHPにアップグレードすることを選択した場合にのみ影響を受ける可能性があります。拡張機能を削除するための正確な時間は決定されていません。
次に、古いext / mysql拡張機能が舞台裏で行っていたように、変数を使用してデータベース接続を格納できます。トリックは、それが何をしているのかを知らなかったということでした(mysql_connectを呼び出したときに作成した最後に開いた接続を使用し、mysql_queryなどを呼び出してデータベースにアクセスするたびにそれを使用します)。
これは、手続き型スタイルを使用して関数内の静的変数で行うことができます。
function openDBConn() {
static $link;
if (!isset($link)) {
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
}
return $link; // returns the link
}
または、OOPを使用してクラス静的変数でこれを行うことができます...
Class MyDBConnect {
public static $link;
public function openDBConn() {
if (!isset(static::$link)) {
static::$link = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
}
}
}
新しいAPIを使用することをお勧めします。また、それを称賛しますが、前進する際には注意も必要です。関数を古いext/mysql関数から新しいmysqli拡張機能に移植し始めるときは、古い拡張機能の悪い習慣(古いSQL文字列の連結やエスケープ手法ext /の使用など)も移植しないように注意してください。 mysqlが提供されます)。代わりに、MySQLiで準備されたステートメントとパラメーター化されたクエリを利用してください。
私があなたの注意を向けたいのは、MySQLデータベース(つまり、PDOとMySQLi)とインターフェースするために新しいAPIを使用することの利点です。