DinhoPHP 1 Denunciar post Postado Março 15, 2015 Olá! Tenho o seguinte erro que acontece apenas no servidor, mas quando uso o wamserve ou easyphp não acontece. Agradeço à todos que tentarem me ajudar, como também os que conseguirem uma solução por meio de outra alternativa. Erro:Fatal error: Call to undefined method DB::prepare() in /home/assem528/public_html/reg_ieadr/Crud.php on line 21 arquivo Crud.php <?php require_once 'DB.php'; abstract class Crud extends DB{ protected $table; abstract public function insert(); abstract public function update($id); public function find($id){ $sql = "SELECT * FROM $this->table WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $stmt->fetch(); } public function findAll(){ $sql = "SELECT * FROM $this->table"; $stmt = DB::prepare($sql); <= (ESTA É A LINHA DO ERRO) $stmt->execute(); return $stmt->fetchAll(); } public function delete($id){ $sql = "DELETE FROM $this->table WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':id', $id, PDO::PARAM_INT); return $stmt->execute(); } } Arquivo config.php <?php define('DB_HOST', 'localhost'); define('DB_NAME', 'assem528_depart_matriz'); define('DB_USER', 'assem528_admin'); define('DB_PASS', 'ecsc21yh'); Arquivo DB.php <?php require 'config.php'; class DB{ private static $instance; public static function getInstance(){ if(!isset(self::$instance)){ try { self::$instance = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS); self::$instance->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); self::$instance->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ); } catch (PDOException $e) { echo $e->getMessage(); } } return self::$instance; } public static function prepare($sql){ return self::getInstance()->prepare($sql); } } Arquivo Usuario.php <?php require_once 'Crud.php'; class Usuarios extends Crud{ protected $table; private $lembrete; private $dirigente; private $integrantes; private $festividade; public function setTable($table){ $this->table = $table; } public function setLembrete($lembrete){ $this->lembrete = $lembrete; } public function getLembrete(){ return $this->lembrete; } public function setDirigente($dirigente){ $this->dirigente = $dirigente; } public function setIntegrantes($integrantes){ $this->integrantes = $integrantes; } public function setFestividade($festividade){ $this->festividade = $festividade; } public function insert(){ //Verifica se há registros, e se houver, segue com a inserção $linhas="SELECT * FROM $this->table"; $linhas2=DB::prepare($linhas); $linhas2->execute(); if($linhas2->rowCount() == 0): $sql = "INSERT INTO $this->table (lembrete, dirigente, integrantes, festividade) VALUES (:lembrete, :dirigente, :integrantes, :festividade)"; $stmt = DB::prepare($sql); $stmt->bindParam(':lembrete', $this->lembrete); $stmt->bindParam(':dirigente', $this->dirigente); $stmt->bindParam(':integrantes', $this->integrantes); $stmt->bindParam(':festividade', $this->festividade); //Executa o cadastro return $stmt->execute(); else: $msg="Sorry! Já existe informações cadastradas no sistema, sendo possível apenas editá-las ou excluí-las."; endif; } public function update($id){ $sql = "UPDATE $this->table SET lembrete = :lembrete, dirigente = :dirigente, integrantes = :integrantes, festividade = :festividade WHERE id = :id"; $stmt = DB::prepare($sql); $stmt->bindParam(':lembrete', $this->lembrete); $stmt->bindParam(':dirigente', $this->dirigente); $stmt->bindParam(':integrantes', $this->integrantes); $stmt->bindParam(':festividade', $this->festividade); $stmt->bindParam(':id', $id); return $stmt->execute(); } } Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 15, 2015 Estranho é colocar o nome em uma função estática, com o mesmo nome de uma função reservada da PDO :assobiando: Add link http://php.net/manual/pt_BR/pdo.prepare.php Compartilhar este post Link para o post Compartilhar em outros sites
DinhoPHP 1 Denunciar post Postado Março 16, 2015 Ok Willian, verei com tempo. É que como estou com o dia a dia muito corrido, esse código eu peguei e estou adaptando às minhas necessidades. PHP eu estou cursando, então determinadas atrocidades como esta eu ainda não consigo ver e corrigir. Programo há anos, mas PHP é a linguagem que menos tenho familiaridade e experiência. Mas obrigado pelo aviso! :joia: Compartilhar este post Link para o post Compartilhar em outros sites
DinhoPHP 1 Denunciar post Postado Março 19, 2015 Consegui solucionar o meu problema no servidor pago, indicando o caminho absoluto no require. Uffaaaaaaaaaaa!!!!!!!!! Com a dica do Andrews Esteves, do Youtube. :) :) :) :) Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Março 19, 2015 Mais fácil carregar estas classes com Autoloader http://goo.gl/31iT7q Compartilhar este post Link para o post Compartilhar em outros sites
brasilaprendiz2011 0 Denunciar post Postado Julho 8, 2016 Consegui solucionar o meu problema no servidor pago, indicando o caminho absoluto no require. Uffaaaaaaaaaaa!!!!!!!!! Com a dica do Andrews Esteves, do Youtube. :) :) :) :) manow to com o mesmo problema com o mesmo code que vc. mais nao consegui resolver. pode me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
DinhoPHP 1 Denunciar post Postado Julho 9, 2016 Bom, eu estavas com esse problema, posta o seu código. No meu caso o erro era na indicação no caminho do arquivo. Compartilhar este post Link para o post Compartilhar em outros sites