MySQL から MySQLi および OO コードに移行した後、最初の DB クラスの作成を開始しました。多数のチュートリアルを読んだ後、単純なパズルが残りました。私のコードは MySQL への 2 つの接続を開くのでしょうか?もしそうなら、どうすればそれを防ぐことができるでしょうか? 私は現在、一般的なユーザー データ用に 1 つのテーブル (azgoth_en) を使用し、セッション データ用に別のテーブル sess を使用しています (そのための 2 番目のクラスを構築しています)。私のコードは次のとおりです。
class db {
protected $connection, $lang;
[...]
function __construct($db='azgoth_en',$lang='en',$host='localhost',$uz='root',$pw='') {
$this->lang=$lang;
$mysqli=mysqli_connect($host,$uz,$pw,$db);
if ($mysqli) {
$this->connection=$mysqli;
unset($mysqli);
}
else die('Mysql failed ('.mysqli_errno($mysqli).'): '.mysqli_error($mysqli));
}
}
class sessions extends db {
var $connection;
function open() {return true;}
function close() {return true;}
function read($id){
$foo=$this->connection;
var_dump($foo);
#echo '_read var dump: ',var_dump(parent::query("SELECT * FROM sess")),'<hr>';
#$id=parent::connection->real_escape_string($id);
/*$result=mysqli_query($langCon,"SELECT `data` FROM `sess` WHERE `id`='{$id}' LIMIT 1");
if ($result && mysqli_num_rows($result)) {
echo '_read result found<hr>';
$record = mysql_fetch_assoc($result);
return $record['data'];
} */
return null;
}
}
$db=new db;
$sessions=new sessions;
ほとんどの人にとってこれが常識のように思えるかもしれませんが、私が読んだすべてのチュートリアルでは、静的メソッド/変数の継承についてのみ言及されており、ここで実際に遭遇したことについては何も言及されていません。