我有父类和子类PHP类。我不能在mysqli语句中使用父类中的变量作为绑定变量(php将其视为常量?)。请帮帮我 看
<?php
class cparent{
public $var1;
public function __construct(){
$this->var1 = 1;
}
}
class cchild extends cparent{
private $mysqli;
public function __construct(){
parent::__construct();
}
public function getVar1(){
return $this->var1;
}
public function some_mysqli_func(){
if (!$stmt = $this->mysqli->prepare("INSERT INTO bla(var) VALUES (?)")){
echo 'Error: ' . $this->mysqli->error;
return false;
}
$stmt->bind_param('i', $this->var1);
$stmt->execute();
}
}
$child = new cchild();
echo $child->getVar1(); //ок
$child->some_mysqli_func(); // Only variables should be passed by reference php
?>
答案 0 :(得分:2)
这是罪魁祸首:
$stmt->bind_param('i', $this->var1);
bind_param()
方法通过引用进行赋值,只能通过变量来完成。从技术上讲,$this->var1
是一种财产。您可以使用临时变量:
$var1 = $this->var1;
$stmt->bind_param('i', $var1);
只需使用PDO
:
$statement->bindValue(':var', $this->var1);
这将通过复制绑定,而不是通过引用绑定,并且应该为您提供更多的灵活性。