Аз съм сериозен начинаещ, който се опитва да актуализира някои LAMP кодове на mysqli до PDO/OOP. Сигурен съм, че новият ми код е неефективен. Просто използвам този проект като учебен опит.
Опитвам се да предам няколко свойства на PHP клас към MySQL заявка, която е в рамките на метод в същия този PHP клас. Това би осъществило основно вмъкване в една mysql таблица. Опитах това, използвайки както PDO подготвени изрази, така и основния метод на PDO::query.
Когато се опитвам да вмъкна, използвайки версията на подготвените изрази на моя клас (код по-долу), получавам грешка „Извикване на членска функция bindParam() на не-обект“ на ред 27 (първият ред bindParam).
<?php
class weightInfoInsert
{
// properties
private $date;
private $weight;
private $note;
private $dbc;
private $insertQueryWithNote;
private $sth;
// methods
public function __construct($date, $weight, $note, $dbc)
{
$this->date = $date;
$this->weight = $weight;
$this->note = $note;
$this->dbc = $dbc;
}
public function insertWeightWithNote()
{
$insertQueryWithNote = ' INSERT INTO weight (weight_date,weight,weight_note) VALUES ( :date, :weight, :note ) ';
$sth = $this->dbc->prepare($insertQueryWithNote);
$sth->bindParam(':date', $this->date, PDO::PARAM_STR, 8);
$sth->bindParam(':weight', $this->weight, PDO::PARAM_STR, 5);
$sth->bindParam(':note', $this->note, PDO::PARAM_STR);
$this->sth->execute();
}
}
Когато се опитвам да вмъкна с помощта на метода PDO::query() (код по-долу), получавам "синтактична грешка, неочаквано '$this' (T_VARIABLE)" на ред 23 (редът с израз на заявката).
<?php
class weightInfoInsert
{
// properties
private $date;
private $weight;
private $note;
private $dbc;
private $insertQueryWithNote;
// methods
public function __construct($date, $weight, $note, $dbc)
{
$this->date = $date;
$this->weight = $weight;
$this->note = $note;
$this->dbc = $dbc;
}
public function insertWeight()
{
$insertQueryWithNote = ' INSERT INTO weight (weight_date,weight) VALUES ('$this->date','$this->weight','$this-note') ';
$this->dbc->query($insertQueryWithNote);
}
}
Въпреки че вероятно ще използвам метода на подготвените отчети, в идеалния случай бих искал да знам къде сбърках и при двата метода. Благодаря ти.
$insertQueryWithNote = "INSERT INTO weight (weight_date,weight) VALUES ('$this->date','$this->weight','$this-note')";
Трябва да са двойни кавички, а не единични - person Rasclatt   schedule 29.08.2015