在 PHP class 中插入 PHP class 属性作为 SQL 查询变量
Inserting PHP class properties as SQL query variables within the PHP class
我是一个认真的新手,正在尝试将一些 mysqli LAMP 代码更新为 PDO/OOP。我确信我的新代码效率低下。我只是把这个项目作为学习经验。
我正在尝试将一些 PHP class 属性传递给同一 PHP class 中方法内的 MySQL 查询。这将完成对单个 mysql table 的基本插入。我已经尝试过使用 PDO 准备语句和基本 PDO::query 方法。
当我尝试使用 class 的准备好的语句版本插入时(下面的代码),我在第 27 行(第一个 bindParam 行)收到 "Call to a member function bindParam() on a non-object" 错误。
<?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() 方法(下面的代码)插入时,我在第 23 行(查询语句行)得到 "syntax error, unexpected '$this' (T_VARIABLE)"。
<?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);
}
}
虽然我可能会使用准备好的语句方法,但理想情况下我想知道这两种方法哪里出了问题。谢谢你。
这样试试,'
有语法问题,$this-note
应该是 $this->note
$insertQueryWithNote = "INSERT INTO weight (weight_date,weight) VALUES ('$this->date','$this->weight','$this->note')";
我是一个认真的新手,正在尝试将一些 mysqli LAMP 代码更新为 PDO/OOP。我确信我的新代码效率低下。我只是把这个项目作为学习经验。
我正在尝试将一些 PHP class 属性传递给同一 PHP class 中方法内的 MySQL 查询。这将完成对单个 mysql table 的基本插入。我已经尝试过使用 PDO 准备语句和基本 PDO::query 方法。
当我尝试使用 class 的准备好的语句版本插入时(下面的代码),我在第 27 行(第一个 bindParam 行)收到 "Call to a member function bindParam() on a non-object" 错误。
<?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() 方法(下面的代码)插入时,我在第 23 行(查询语句行)得到 "syntax error, unexpected '$this' (T_VARIABLE)"。
<?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);
}
}
虽然我可能会使用准备好的语句方法,但理想情况下我想知道这两种方法哪里出了问题。谢谢你。
这样试试,'
有语法问题,$this-note
应该是 $this->note
$insertQueryWithNote = "INSERT INTO weight (weight_date,weight) VALUES ('$this->date','$this->weight','$this->note')";