使用php/sql从两个不同对象获取参数以插入数据库

使用php/sql从两个不同对象获取参数以插入数据库,php,sql,object,Php,Sql,Object,我正在尝试创建一个“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 我知道它可能没有被引用,

我正在尝试创建一个“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()

首先将您的用户类包含在此文件中。然后在中,在类中创建用户属性。在构造函数中,创建用户类的实例。然后可以使用用户类函数

<?php

require_once("user.class.php"); //the user management class path

class creditCardAccess {

protected $link;

var $user;

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);
    $this->user = new User();
}

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);
}

}
?>

您的$user对象应作为参数传递给函数,否则您将永远无法看到$user

public function insertCreditCard($creditCard, $user) {

你应该将信用卡的详细信息存储为纯文本-至少使用MD crypt函数对其进行加密Hanks Zak,我想我之前已经尝试过了,但可能是拼写错误。工作得很愉快!