0

MySQL との接続を容易にするクラスを構築していますが、T_CONSTANT_ENCAPSED_STRING エラーが発生します。文字列と関係があると思いますが、何も問題はありません。

コードは次のとおりです。

<?php
class mysql
{
    private $host;
    private $user;
    private $pass;
    private $connection;
    private $database;
    private $result;

    public function __construct()
    {
        $this -> $host = 'localhost';
        $this -> $user = 'root';
        $this -> $pass = '';
    }

    public function connect($_host, $_user, $_pass)
    {
        if (isset('$_host')) $this -> $host = $_host;
        if (isset('$_user')) $this -> $user = $_user;
        if (isset('$_pass')) $this -> $pass = $_pass;
        $this -> disconnect();
        $this -> $connection = mysql_connect($this -> $server, $this -> $user, $this -> $pass);
        if (! $this -> $connection) return mysql_error();
        else return true;
    }

    public function isconnected()
    {
        if(is_resource($this -> $connection) && get_resource_type($this -> $connection) === 'mysql link') return true;
        else return false;
    }

    public function disconnect()
    {
        if ($this -> isconnected()) mysql_close($this -> $connection);
    }

    private function setdb($_dbname)
    {
        $this -> $database = $_dbname;
        if (! mysql_select_db($this -> $database, $this -> $connection)) return mysql_error();
        else return true;
    }

    public function runquery($_query)
    {
        if(! isset($database)) return mysql_error();
        else return mysql_query($_query,$this -> $connection);
    }

    public function __destruct()
    {
        $this -> disconnect();
        unset($this -> $host);
        unset($this -> $user);
        unset($this -> $pass);
        unset($this -> $connection);            
        unset($this -> $database);
        unset($this -> $result);
    }
}

$phpmyadmin = new mysql();
echo $phpmyadmin.connect('localhost','root','');
echo $phpmyadmin.setdb('DBTEST');
$result = $phpmyadmin.runquery("SELECT * FROM TABTEST");
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
    echo $row['PERSON_NAME'];
}
?>

私が得るエラーは次のとおりです。

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in C:\xampp\htdocs\test\mysql\mysql.php on line 20

20行目は明らかに次のとおりです。

if (isset('$_host')) $this -> $host = $_host;

何が間違っている可能性がありますか?

編集:ありがとう。構文エラーを修正しましたが、新しいエラーが表示されるようです: Fatal error: Cannot access empty property in C:\xampp\htdocs\test\mysql\mysql.php on line 13

4

2 に答える 2

2

2番目の問題への対処:

次のように、の$後にを削除する必要があります。->

$this->$host

する必要があります:

$this->host
于 2012-04-21T08:00:16.677 に答える
2

isset(emptyおよび ) は関数ではなく言語構成要素であり、独自のプロパティがあります。速度を向上させるために、インタープリターは変数 (または変数配列のキー) でのみ使用できるようにします。そのため、変数ではないものに対してissetorを使用することはできません。empty実際には構文エラーです。

... isset($host) ...
于 2012-04-21T07:48:31.090 に答える