1

$ idをクラス内に保存して、次に関数を実行するときに使用できるようにする方法はありますか?

これまでのところ、クエリの実行後に関数内で正しい$ idを取得していますが、関数を再実行すると、初期化されていない$idが再度取得されます。

class ShortURL {
    public $id;
    public $val2;

    function insert() {

        $conn = new PDO( DB_DSN, DB_USER, DB_PASS );
        $sql = "INSERT INTO art ( val1, val2 ) VALUES ( :val1, :val2 )";
        $st = $conn->prepare( $sql );
        $st->bindValue( ":val1", self::hash ( $this->id+1 ), PDO::PARAM_STR );
        $st->bindValue( ":val2", $this->val2, PDO::PARAM_STR );     
        $st->execute();
        $this->id = $conn->lastInsertId();
        $conn = null;
    }
}
4

1 に答える 1

0

関数を実行する前にクラスの新しいインスタンスを作成すると、変数がリセットされます。したがって、次のようにすると:

$insert = new ShortURL();
$insert->insert();
echo $insert->id;
//You should see your value correctly
$insert = new ShortURL();
echo $insert->id;
//Now that you initialized the function again, the value is cleared

クラスを作成してから、クラスの同じインスタンスを再利用してみてください。

于 2013-02-02T20:10:49.840 に答える