クレジットカードの詳細をデータベースに保存したい「CDストア」プログラムを作成しようとしていますが、データベースが他の場所で作成したユーザーの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() です