我正在构建一个可以简化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;
可能出现什么问题?
编辑: 谢谢。我更正了语法错误,但它似乎给了我一个新的错误: 致命错误:无法访问第13行的C:\ xampp \ htdocs \ test \ mysql \ mysql.php中的空属性
答案 0 :(得分:2)
isset
(以及empty
)是语言结构而不是函数,它们具有唯一属性 - 为了提高速度,解释器只允许它们用于变量(或键)变量数组)。因此,您不能对任何不是变量的内容使用isset
或empty
。这实际上是一个语法错误。
... isset($host) ...
答案 1 :(得分:2)
解决你的第二个问题:
您应该删除$
之后的->
,如下所示:
$this->$host
应该是:
$this->host