以下代码给出了一个错误: 解析错误:语法错误,意外T_VARIABLE,期望第4行中的T_FUNCTION
<?php
class mydb
{
$mydblink = mysqli_connect( 'localhost:3306','root','123qweasdzxc','test' );
public static function checklink() {
if ( !$mydblink ) {
die('Could not connect to MySQL: ' . mysql_error());
}
echo 'Connection OK';
mysql_close($mydblink);
}
}
mydb::checklink();
但是将$ mydblink移动到函数中使其工作,
<?php
class mydb
{
public static function checklink() {
$mydblink = mysqli_connect( 'localhost:3306','root','123qweasdzxc','test' );
if ( !$mydblink ) {
die('Could not connect to MySQL: ' . mysql_error());
}
echo 'Connection OK';
mysql_close($mydblink);
}
}
mydb::checklink();
为什么呢?这是否意味着我不能在PHP中的类中声明私有变量?
答案 0 :(得分:5)
您可以声明私有变量,但不能在类属性声明中执行mysql_connect之类的代码。您只能设置基元。
class MyDB {
private $dbc;
private $someInteger = 4; // you can do this
private $someArray = array(); // and this.
public function __construct()
{
$this->dbc = new mysqli('localhost', 'user', 'pass', 'db');
}
public function getDbc()
{
return $this->dbc;
}
}
$system = new MyDB();
//$system->getDbc()->soSomethingWithMyDb();
另外,请注意不推荐使用mysql_。我建议你使用mysqli_或PDO
答案 1 :(得分:2)
类中的代码需要在函数内部:
class mydb{
// Parse error
$mydblink = mysql_connect( 'localhost:3306','root','123qweasdzxc','test' );
}
class mydb{
// Correct
public function __construct(){
$this->mydblink = mysql_connect( 'localhost:3306','root','123qweasdzxc','test' );
}
}
答案 2 :(得分:0)
您需要将其声明为变量,例如;
private $mydblink = mysql_connect( 'localhost:3306','root','123qweasdzxc','test' );
答案 3 :(得分:0)
旁注mysql_connect
需要3个参数,你在这里传递了4个
mysql_connect( 'localhost:3306','root','123qweasdzxc','test' );
应该是
mysql_connect( 'localhost:3306','root','123qweasdzxc');
mysql_select_db('test');