试图在PHP中获取非对象错误的属性

时间:2016-08-11 06:42:15

标签: php pdo syntax-error notice

我试图使用php保存我的数据。这就是我尝试的方式:

<?php
session_start();
if(!isset($_SESSION["MemberID"])) header("Location:logout.php");
include '../config.php';
include '../momdb.php';

$page_title = "Customers";
$mode = "Save";
$db = 'db';
$showmessage = false;
$message = "";
if (isset ( $_POST ["btnSave"] )) {
    $data = new table ();
    $data->MomID = $_POST ["CustomerID"];
    $data->CustomerName = $_POST ["CustomerName"];
    $data->FromDate = string_to_date ( $_POST ["FromDate"] );
    $data->ToDate = string_to_date ( $_POST ["ToDate"] );
    $data->CreatedBy = $_SESSION["MemberID"];
    $data->CreatedDatetime = date ( "Y-m-d H:i:s" );
    $data->LastModifiedBy = $_SESSION["MemberID"];;
    $data->LastModifiedDatetime = date ( "Y-m-d H:i:s" );

    $rows = array ();
    if (intval ( $data->CustomerID) > 0) {
        $rows = $db::Update ( $data );
    } else {
        $rows = $db::Save ( $data );
    }
    if (intval ( $rows ["WebID"] ) > 0) {
        $date = new DateTime ();
        header ( "Location: customerlist.php?msg=yes&msgt=s&t=" . $date->getTimestamp () . "&mtext=Record saved successfully" );
    } else {
        $showmessage = true;
        $message = $rows ["Message"];
    }
} elseif (isset ( $_GET ["CustomerID"] )) {
    $data = $db::GetByID ( $_GET ["CustomerID"] );
    if ($data == false) {
        $data = new table ();
        $data->CustomerID = 0;
    }
}

if ($data->CustomerID == "0")
    $mode = "Save";
else
    $mode = "Update";
?>

此代码用于将我的值发送到数据库页面,以便将它们保存在数据库中。我使用过PDO方法。这是我第一次以这种方式保存记录。这就是为什么会有很多混乱的原因。以下代码显示了Save()方法,我将其用于将值保存到数据库中。

public function Save(table $customer) {
        $data = new DB ();
        $stmt = $data->connection->prepare ( "CALL proc_CreateCustomer  (:CustomerName, :FromDate,:ToDate,:CreatedBy, :CreatedDatetime, :LastModifiedBy, :LastModifiedDatetime)" );
        $stmt->bindParam ( ':CustomerName', trim ($customer->CustomerName ));
        $stmt->bindParam ( ':FromDate', $customer->FromDate );
        $stmt->bindParam ( ':ToDate', $customer->ToDate);
        $stmt->bindParam ( ':CreatedBy',$customer->CreatedBy );
        $stmt->bindParam ( ':CreatedDatetime', $customer->CreatedDatetime );
        $stmt->bindParam ( ':LastModifiedBy',$customer->LastModifiedBy );
        $stmt->bindParam ( ':LastModifiedDatetime', $customer->LastModifiedDatetime );
        $stmt->execute ();
        $record = $stmt->fetch ( PDO::FETCH_OBJ );
        if ($record == false) {
            return array (
                    "WebID" => 0,
                    "Message" => $record->Message,
                    "AppID" => $customer->AndroidID 
            );
        } else {
            return array (
                    "WebID" => $record->CustomerID,
                    "Message" => $record->Message,
                    "AppID" => $customer->AndroidID 
            );
        }
    }

这就是我尝试过的方式。但是,每当我试图保存细节时,它都会显示:&#34; Trying to get property of non-object in D:\Workspace\Application\momdb.php on line 39&#34;,即它在行"Message" => $record->Message,"AppID" => $customer->AndroidID中显示错误。我不知道这有什么问题。有人能告诉我应该改变什么才能使它正常工作?

1 个答案:

答案 0 :(得分:1)

if ($record == false) {
    return array (
            "WebID" => 0,
            "Message" => $record->Message,
            "AppID" => $customer->AndroidID 
    );
}

在这段代码中,$record为false(y),因此$record->Message不存在。