我正在使用我正在开发的一个类的框架,并且在完成它之前我正在对其进行测试。
但是,我遇到了几个似乎干扰其执行的错误。
以下是 php 警告/错误:
Notice: A session had already been started - ignoring session_start() in
/var/www/VRC_Header2.php on line 2
Strict Standards: Redefining already defined constructor for class CheckOut in
/var/www/CheckOut_old.php on line 18
这是涉及的两个类:
<?php //Checkout class - NOTE: Add exception handler later
class CheckOut extends DB_MySQL{
public $fName;
public $lName;
public $numberOut;
public $p_id;
public function __construct($dbuser, $dbpass, $dbhost, $dbname)
{
parent::__construct($dbuser, $dbpass, $dbhost, $dbname);
$this->connect();
}
//Grab the values of the territory being checked out
public function checkOut($numberOut)
{
$this->numberOut=$numberOut;
/*
*Begin checkout function that inserts into database.
*Make sure all tests are run BEFORE calling this method.
*Begin checkout function:
*/
//Check Connection
$this->checkConnect();
//Start Checkout
$stmt = $this->dbh->prepare("INSERT INTO checkOut(t_id, p_id, checkTime, due) VALUES(:param1, :param2, curdate(), date_add(curdate(), interval 3 month))");
$stmt->bindParam(':param1', $this->numberOut);
$stmt->bindParam(':param2', $this->p_id);
$stmt->execute();
if($stmt == FALSE)
return false;
else
return true;
}
private function checkConnect()
{
if(!isset($this->dbh))
$this->connect();
}
public function territoryCheck($numberOut)
{
$this->numberOut = $numberOut;
//Execute test
$this->checkConnect();
$stmt = $this->dbh->prepare("SELECT t_id FROM Territory WHERE t_id = :param1");
$stmt->bindParam(':param1', $this->numberOut);
$stmt->execute();
$stmt->fetch();
//Determine value of test
if($stmt == FALSE)
{
return FALSE;
}
}
public function publisherCheck($lName, $fName)
{
$this->lName = $lName;
$this->fName = $fName;
//Execute test
$this->checkConnect();
$stmt = $this->dbh->prepare("SELECT p_id FROM People WHERE lastName = :param1 AND firstName = :param2");
$stmt->bindParam(':param1', $this->lName);
$stmt->bindParam(':param2', $this->fName);
$stmt->execute();
//Determine value of test
if($stmt == FALSE)
{
return FALSE;
}
else
{
$dummyvar = $stmt->fetch();
$this->p_id = implode($dummyvar);
}
}
public function isTerritoryOut($numberOut)
{
//Execute test
$this->checkConnect();
$this->numberOut = $numberOut;
$stmt = $this->dbh->prepare("SELECT t_id FROM checkIn WHERE t_id = :param1");
$stmt->bindParam(':param1', $this->numberOut);
$stmt->execute();
$stmt->fetch();
//Determine value of test
if($stmt == FALSE)
{
return FALSE;
}
}
}
?>
和另外一个:
include 'VRC_Header2.php';
class DB_MySQL {
protected $dbuser;
protected $dbpass;
protected $dbhost;
protected $dbname;
protected $dbh; // Database connection handle
public function __construct($dbuser, $dbpass, $dbhost, $dbname)
{
$this->dbuser = $dbuser;
$this->dbpass = $dbpass;
$this->dbhost = $dbhost;
$this->dbname = $dbname;
}
//Used to create connections - almost always called by execute()
protected function connect()
{
try
{
$this->dbh = new PDO("mysql:host=$this->dbhost;dbname=$this->dbname",$this->dbuser,$this->dbpass);
}
catch(PDOException $e)
{
print "Error!: ".$e->getMessage()."<br/>";
die();
}
}
}
?>
这些类不完整,但它们是功能性的。现在,我觉得真正的问题与构造函数有关(它们当然是错误的)。但这是我之前发布的关于该问题的问题以及我收到的答案:子类构造函数将如何与 php 中的父类构造函数交互?.
这里出了什么问题?
任何帮助表示赞赏。
编辑:我还应该添加我传递给类的值没有插入到数据库中。我认为这是错误的结果/