Я серьезный новичок, пытающийся обновить некоторый код mysqli LAMP до 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