2

mysqlリソースを$_SESSION変数に与えることは可能ですか?

//mysqldb.inc.php
class mySqlDb
{
    private $link;

    public function __construct($_host = '', $_db = '', $_user = '', $_pwd = '')
    {
           $link = mysql_pconnect(...);
    }

    public function query($data)
    {
           $r = mysql_query($data, $this->link);
           return $r;
    }
}


//index.php
session_start();
include_once('mysqldb.inc.php');

$sqlobj = new mySqlDb();
$sqlobj->dbconnect($db_host, $db_name, $db_user, $db_pwd);
$_SESSION['mysqldb'] = $sqlobj;


//check.php
session_start();
include_once('mysqldb.inc.php');

$sqlobj = $_SESSION['mysqldb'];
$sqlobj->query(...);

$sqlobj->query(...)戻る

致命的なエラー:main():スクリプトがメソッドを実行しようとしたか、不完全なオブジェクトのプロパティにアクセスしようとしました。unserialize()が呼び出される前に、操作しようとしているオブジェクトのクラス定義「mySqlDb」がロードされていることを確認するか、D:\ apache \ www \ check.phpにクラス定義をロードするための__autoload()関数を提供してください。 4行目`

を使用$_SESSION['mysqldb'] = serialize($sqlobj)$sqlobj = unserialize($_SESSION['mysqldb'])てこのエラーが発生した場合:

警告:mysql_query()は、パラメーター2がリソースであると想定しています。整数はD:\ apache \ www\mysqldb.inc.phpの行で指定されています...

4

2 に答える 2

4

PHPリソースを永続化することはできません。

それだけです-あなたはただできません。したがって、毎回データベースに接続する必要があります。

$_SESSIONドキュメントノート:

セッションデータはシリアル化されているため、リソース変数をセッションに保存することはできません。

于 2012-08-13T21:09:07.707 に答える
1

あなたはこれを持っています:

$sqlobj = new mySqlDb();

しかし、あなたはこれを行います:

$_SESSION['mysqldb'] = $sql;

$_SESSION['mysqldb']つまり、存在しないオブジェクトに設定しています。$sqlobj代わりに試してください。

于 2012-08-13T21:08:29.257 に答える