Синтаксис массива Key-Value в PHP - PullRequest
0 голосов
/ 23 апреля 2020

Я написал код PHP, используя PDO. Я новичок в синтаксисе PHP, поэтому я следую документации PHP. Я получаю синтаксическую ошибку в выражении $ params = array (.... Возможно, проблема с синтаксисом - это ссылка на глобальные переменные, но это ссылка, которую я нашел в документации PHP.

Вот мой код:

<?php

/*
    Sets up a PDO object for the ResDatLog table
*/

class Resdatalog
{  
    // database connection and table name
    private $_conn;
    private $_table_name = "ResDataLog";

    // object properties
    public $ID;
    public $Location = null;
    public $Temperature;
    public $Humidity;
    public $Pressure;
    public $RecDate;
    public $AmbientTemp;
    public $AmbientHum;
    public $AmbientPressure;

    /* 
        constructor with $db as database connection
    */
    public function __construct($db)
    {
        $this->conn = $db;
    }

    /* 
        Reads all columns of the entire table ($table_name)
    */
    function read() 
    {
        // select all query
        $query = "SELECT *
                FROM
                " . $this->table_name . "
                ORDER BY 
                    id DESC";

        // prepare query statement
        $stmt = $this->conn->prepare($query);

        // execute query
        $stmt->execute();
        return $stmt;
    }
    function insert()
    {
        // insert a new row into the table_name table
        $sql = 'INSERT Location, Temperature, Humidity, Pressure, RecDate,
         AmbientTemp, AmbientHum, AmbientPressure into '
         . $this->table_name . 
         ' VALUES (:Location,:Temperature, :Humidity, 
         :Pressure, :RecDate, :AmbientTemp, :AmbientHum, :AmbientPressure)';

        $sth = $this->conn->prepare($sql);

        $params = array(
            ':Location' => ResDataLog->Location,
            ':Temperature'=> ResDataLog->Temperature,
            ':Humidity'=> ResDataLog->Humidity,
            ':Pressure'=> ResDataLog->Pressure,
            ':RecDate'=> ResDataLog->RecDate,
            ':AmbientTemp'=> ResDataLog->AmbientTemp,
            ':AmbientHum'=> ResDataLog->AmbientHum,
            ':AmbientPressure'=> ResDataLog->AmbientPressure);


         Return($$sth->execute($params));
    }
}
?>

1 Ответ

2 голосов
/ 23 апреля 2020

Вы можете сделать это с $this, поскольку вы inside класс вместо использования прямого class name.

  1. Если вы были outside класса, вам нужно создать экземпляр Resdatalog, а затем получить доступ / присвоить значения переменным, как показано ниже.

     $ResdatalogInstance = new Resdatalog;
     $ResdatalogInstance->Location="assign some values";
    
  2. Если бы это было static как public static $Location;, то вы можете сделать это, Resdatalog::$Location или self::$Location.

    $params = array(
      ':Location' => $this->Location,
       ':Temperature'=> $this->Temperature,
      ':Humidity'=> $this->Humidity,
      ':Pressure'=> $this->Pressure,
      ':RecDate'=> $this->RecDate,
      ':AmbientTemp'=> $this->AmbientTemp,
      ':AmbientHum'=> $this->AmbientHum,
      ':AmbientPressure'=> $this->AmbientPressure
    

    );

Также вам необходимо удалить из этой строки дополнительный знак $,

 return ($sth->execute($params));
        ^^
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...