我是php的面向对象编程的新手。我有个问题。我写了一个代码,但这不起作用。我知道这很容易,但我想知道它有什么问题。我收到以下错误:
<?php
class connectDB
{
$connection;
$server= "localhost";
$userName = "root";
$password = "";
$select;
$dbName = "profiles";
public function connect()
{
$connection = mysql_connect($server,$userName,$password);
$select = mysql_select_db($dbName,$connection);
}
public function query()
{
$result = mysql_query($query);
if (!$result) {
echo 'Bağlantı Hatası: ' . mysql_error();
exit;
}
}
public function end()
{
mysql_free_result($connection);
}
}
?>
当我尝试在另一个文件中使用它时,我现在接受此错误:(
答案 0 :(得分:3)
为什么不使用MySQLi?
它简单,强大且随时可用。
答案 1 :(得分:2)
您需要为每个属性声明access modifier
,就像使用这些方法一样。只需在变量名称前添加public
,private
或protected
之类的内容。
此外,我注意到在尝试访问函数中的类的属性时,你做错了什么。例如:
$connection = mysql_connect($server,$userName,$password);
应该是
$this->connection = mysql_connect($this->server,$this->userName,$this->password);
顺便说一下,大多数人通常只是将服务器,用户名和密码作为构造函数的参数传递,而不是将其放在类中。不是说这是强制性的......
答案 2 :(得分:2)
这应该有用 (类属性必须具有访问修饰符)
无论如何,如果您使用OO,请查看Mysqli(面向对象的lib)以访问MySql数据库。
修改强> 代码已修复。
class connectDB
{
private $connection;
private $server= "localhost";
private $userName = "root";
private $password = "";
private $select;
private $dbName = "profiles";
public function connect()
{
$this->connection = mysql_connect($this->server,$this->userName,$this->password);
$this->select = mysql_select_db($this->dbName,$this->connection);
}
public function query($query)
{
$result = mysql_query($query);
if (!$result) {
echo 'Bağlantı Hatası: ' . mysql_error();
exit;
}
}
public function end()
{
mysql_free_result($this->connection);
}
}
// usage
$o = new connectDB();
$o->connect();
$o->query("SELECT * FROM EMPLOYEE");
?>
答案 3 :(得分:1)
一个类不应该做某事(是的,它通过方法做某事),主要那里代表某事 - 现实世界的一个对象。被表示的“事物”是做某事的人。
名称
class connectDB
另有建议。
在尝试“只分组功能”之前,您应该从书中学习一些OOP原则。那不是什么课程。
请参阅:https://stackoverflow.com/questions/249835/book-recommendation-for-learning-good-php-oop
最后,您将拥有课程Connection
或课程Database
。
而且,既然你加入了“OOP俱乐部”,就应该使用PDO。