错误插入PHP

错误插入PHP,php,mysql,oop,insert,Php,Mysql,Oop,Insert,我开始学习OOPHP,我有一些问题 在下面的代码中,我尝试在银行中进行一次插入。这很简单,但我已经有问题了 当我尝试发送时,出现以下错误: 致命错误:在第24行的C:\test\web\testoo\Aluno.Controle.php中对非对象调用成员函数query() Aluno.class.php <?php Class Aluno{ private $cpf; public function setCPF($cpf) { $this->cp

我开始学习OOPHP,我有一些问题

在下面的代码中,我尝试在银行中进行一次插入。这很简单,但我已经有问题了

当我尝试发送时,出现以下错误:

致命错误:在第24行的C:\test\web\testoo\Aluno.Controle.php中对非对象调用成员函数query()

Aluno.class.php

<?php
Class Aluno{

private $cpf;

    public function setCPF($cpf)
    {
        $this->cpf = $cpf;
    }

    public function getCPF()
    {
        return $this->cpf;
    }
}
?>

Aluno.Controle.php

<?php
include ('Aluno.class.php');
include ('Banco.php');

$cpf=$_POST['cpf'];

Class AlunoControle {

    private $consulta;

    public function AlunoDao() {

        $novaconexao = new Banco();
        $this->consulta = $novaconexao->conectar(); 

    }

    public function CadastrarAluno($cpf) {

        $this->AlunoDao();
        $cadastrar = new Aluno;
        $cadastrar->setCPF($cpf);

        $query = ("INSERT into cadastro values (". $aluno->getCPF() .")");
        $this->consulta->query($query);


    }
}

$pessoa2 = new AlunoControle();
$pessoa2->CadastrarAluno($cpf);

在调用
cadastraluno
之前,您没有将值设置为
私有财产$consulta

请尝试以下代码:

Class AlunoControle {

    private $consulta;

    public function __construct() {

        $novaconexao = new Banco();
            $this->consulta = $novaconexao->conectar();

    }

    public function CadastrarAluno($cpf) {

        $this->AlunoDao();
        $cadastrar = new Aluno;
        $cadastrar->setCPF($cpf);

        if ($this->consulta->query("INSERT into cadastro values (".$aluno->getCPF().")")) {
        }
    }
}
在这段代码中,您在类构造函数中将值设置为property
consulta

这应该是

public function __construct() {

        $novaconexao = new Banco();
            $this->consulta = $novaconexao->conectar();

    }

$this->consulta
将在创建对象时初始化

从错误消息中可以看到,
$this->consulta
属性未设置为对象

这意味着当您执行以下操作时,出现了一些问题:

$novaconexao = new Banco();
$this->consulta = $novaconexao->conectar();

因此,要么是
conectar()
方法没有返回对象,要么很可能是由于某种原因与数据库的连接失败。

对象“Banco”中有方法“query”吗?好的,不要看到错误的构造函数…这意味着
$this->consulta
不是有效的数据库连接对象。Debug why.OT:代码中有一个未经scaped的变量(
$cpf=$\u POST['cpf']
),它将导致SQL注入$此->咨询->查询($query);现在出现错误:注意:未定义变量:第24行C:\test\web\testoo\aluno.Controle.php中的aluno致命错误:在第24行C:\test\web\testoo\aluno.Controle.php中的非对象上调用成员函数getCPF()。关于您发布的第一个错误,添加:return$MySQLi;这样,它将返回调用query()方法所需的对象。关于第二个错误,请将$aluno替换为$CADASTRALHELLO,抱歉,请稍候。我尝试但现在保留错误:致命错误:在第20行的C:\test\web\testoo\Aluno.Controle.php中调用未定义的方法AlunoControle::AlunoDao()
public function __construct() {

        $novaconexao = new Banco();
            $this->consulta = $novaconexao->conectar();

    }
$novaconexao = new Banco();
$this->consulta = $novaconexao->conectar();