我正在尝试创建一个“CD Store”程序,我想在数据库中存储信用卡详细信息,但我希望数据库引用我在其他地方创建的用户 ID。如何将参数从另一个对象传递给新对象?我试图编写代码,但我不断收到此错误
Fatal error: Call to a member function getId() on a non-object in applications/XAMPP/xamppfiles/htdocs/CDStore/creditCardAccess.php on line 36
我知道它可能没有被引用,并且 $user 变量在 netbeans 中显示为黄色。我不知道我会怎么做?任何指针将不胜感激。这是我的代码谢谢
<?php
class creditCardAccess {
protected $link;
public function __construct() {
$host = "localhost";
$username = "root";
$password = "";
$database = "CDStore";
$dsn = "mysql:host=$host;dbname=$database";
$this->link = new PDO($dsn, $username, $password);
$this->link->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function __destruct() {
$this->link = null;
}
public function insertCreditCard($creditCard) {
if (!isset($creditCard) && $creditCard != null) {
throw new Exception("Credit Card Required");
}
$sql = "INSERT INTO creditCards(cardType, cardName, cardNumber, cardExpiryDate, cardCCV, userID)"
. "VALUES (:cardType, :cardName, :cardNumber, :cardExpiryDate, :cardCCV, :userID)";
$params = array(
'cardType' => $creditCard->getCardType(),
'cardName' => $creditCard->getCardName(),
'cardNumber' => $creditCard->getCardNumber(),
'cardExpiryDate' => $creditCard->getCardExpiryDate(),
'cardCCV' => $creditCard->getCardCCV(),
'userID' => $user->getId()
);
$stmt = $this->link->prepare($sql);
$status = $stmt->execute($params);
if ($status != true) {
$errorInfo = $stmt->errorInfo();
throw new Exception("Could Not Add Credit Card: " . $errorInfo[2]);
}
$id = $this->link->lastInsertId('creditCard');
$creditCard->setId($id);
}
}
?>
第 36 行是 'userID' => $user->getId()