Ir para conteúdo
Fórum Script Brasil
  • 0

Porque esse erro? Como eu faço para repara-lo?


ANDRE_GUSTAVO

Pergunta

Olá pessoal, estou tentanto fazer um UPDATE, mas quando é executado o script responsavel por receber as informações do form e fazer as alterações no db, é exibido o seguinte erro:

Catchable fatal error: Object of class conectar SQL could not be converted to string.... on line 20

Line 20:

$str_SQL_curso = "UPDATE cursos SET curso = '$curso', apresenta = '$apresenta', objetivo = '$objetivo', conteudo = '$conteudo', pre_requisitos = '$pre_requisitos', carga_horaria = '$carga_horaria', horario  = '$horario' WHERE Id = '$id'";
Classe para conexao:
class conectaSQL {
    // Propriedades padrões
    var $servidor = '****'; 
    var $usuario = '******'; 
    var $senha = '*****'; 
    var $banco = '********'; 
    // Outras variáveis para uso interno:
    var $conexao = null;
    var $query = null;

    function conecta() {
        $this->conexao = mysql_connect($this->servidor, $this->usuario, $this->senha);
        $status = mysql_select_db($this->banco, $this->conexao);
        return $status;
    }

    function consulta($query) {
        $this->query = mysql_query($query);
        return $this->query;
    }

    function resultado() {
        return mysql_fetch_assoc($this->query);
    }

    function registros() {
        return mysql_num_rows($this->query);
    }
    function fecha() {
        return mysql_close($this->conexao);
    }
}

O que causa esse erro? Pois a algum tempo já venho usando esse mesmo esquema para fazer as conexoes, alterações, exclusões, etc. Nunca tinha me ocorrido esse erro.

Desde já agradeço a todos a atenção e ajuda.

Até mais, Obrigado!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Na verdade, a linha 20 ao qual o erro se refere é da classe conectarSQL:

function consulta($query) {
            $this->query = mysql_query($query);
            return $this->query;
        }
Creio que o correto seria:
function consulta($query) {
            $query = mysql_query($query);
            return $query;
        }

Teste e poste aqui o resultado.

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Stoma, td bem?

Cara ainda continua retornando o mesmo erro:

Catchable fatal error: Object of class conectaSQLL could not be converted to string in ... salva_altera_curso.php on line 20

alva_altera_curso.php on line 20

$str_SQL_curso = "UPDATE cursos SET curso = '$curso', apresenta = '$apresenta', objetivo = '$objetivo', conteudo = '$conteudo', pre_requisitos = '$pre_requisitos', carga_horaria = '$carga_horaria', horario  = '$horario' WHERE Id = '$id'";

Link para o comentário
Compartilhar em outros sites

  • 0

Na classe conectaSQL, adicione esta função e veja o que acontece:

function __toString(){
    echo "TESTANDO...";
}

OBS: se você puder postar o código de onde você executa a query é melhor

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Ai vai o codigo que executa a query.

$curso             = $_POST['curso'];
$apresenta         = $_POST['apresenta'];
$objetivo                 = $_POST['objetivo'];
$conteudo                = $_POST['conteudo'];
$pre_requisitos        = $_POST['pre_requisitos'];
$carga_horaria        = $_POST['carga_horaria'];
$horario                = $_POST['horario'];
$preço                = $_POST['preço'];
$id                        = $_POST['id'];
$id_preco            = $_POST['id_preco'];



include("conectaSQL.php");        
            $curso = new conectaSQL();
            $curso->conecta();

$str_SQL_curso = "UPDATE cursos SET curso = '$curso', apresenta = '$apresenta', objetivo = '$objetivo', conteudo = '$conteudo', pre_requisitos = '$pre_requisitos', carga_horaria = '$carga_horaria', horario  = '$horario' WHERE Id = '$id'";
            $curso->consulta($str_SQL_curso);
            
            $curso->fecha();    
                
                            
                         // ALTERA PREÇO CURSO
    
                    $preco_valor = new conectaSQL();
            $preco_valor->conecta();
            $str_SQL_preco_valor = "UPDATE precos SET valor = '$preço' WHERE Id = '$id_preco'";
            $preco_valor->consulta($str_SQL_preco_valor);
                
        
            $preco_valor->fecha();    
            
            
        
        echo "<html><body>";
        echo "<p align=\"center\">Informações Alteradas com sucesso!</p>";
        echo "<p align=\"center\"><a id=\"voltar\" href=\"#\">Voltar</a></p>";
        echo "</body></html>";

Obrigado pela ajuda que esta me dando.

Até mais

Link para o comentário
Compartilhar em outros sites

  • 0

Então, você adicionou o método __toString que eu falei?

Quando você monta a query e atribui ela à variável $str_SQL_curso, você utiliza a 'variável' $curso, mas $curso não é uma variável e sim um objeto (a instância da classe conectaSQL):

$curso = new conectaSQL();
Sendo $curso a instância da classe, o único jeito de você fazê-la retornar um 'texto' seria utilizando o método __toString que eu disse, mas provavelmente não lhe seria útil. A variável $curso deve retornar um texto e não um objeto. Apesar de que na primeira linha você atribui à variável $curso o valor de $_GET['curso'], algumas linhas depois você a altera:
$curso = new conectaSQL();

Altere o nome da variável ou então do objeto.

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...