Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fsales_123

Strict Standards:

Recommended Posts

erro alguém me ajuda

 

Strict Standards: Declaration of Conexao::connect() should be compatible with mysqli::connect($host = NULL, $user = NULL, $password = NULL, $database = NULL, $port = NULL, $socket = NULL) in/home/u806549000/public_html/paginas/mysqli.phpon line 60

<?php

$host = "*****************************************"; // Insira o HOST de conexão ao seu banco de dados. Normalmente é localhost ou o IP do seu servidor.
$usuario = "*********"; // Nome de usuário para acessar o banco de dados.
$senha = "******"; // Senha para acessar o banco de dados
$banco = "******"; // Nome do Banco de Dados (não é o nome da tabela, é o nome do banco de dados onde a tabela está localizada)

class Conexao extends mysqli {
    private static $_connected = false;
    private static $_instance = null;
    public function  __destruct() {
        $this->close();
    }
    public static function getInstance() {
        if (null === self::$_instance) {
            self::$_instance = new self ();
        }
        return self::$_instance;
    }
    public function connect() {
global $host, $usuario, $senha, $banco;
        if(!self::$_connected) {
            parent::__construct(
                    $host,
                    $usuario,
                    $senha,
                    $banco
            );
            if(mysqli_connect_errno()) {
                throw new Exception('A Conexao falhou: '.mysqli_connect_error());
            }
            self::$_connected = true;
        }
    }
    public function close() {

        if(self::$_connected) {
            parent::close();
            self::$_connected = false;
        }
    }
    public function query($sql) {
        $this->connect();
        $result = parent::query($sql);
        if($result) {
            return $result;
        }
        else {
            throw new Exception('Query Exception: '.mysqli_error($this).' numero:'.mysqli_errno($this));
        }
    }
    public function ping() {
        if(@mysqli_ping($this)) {
            return true;
        }
        else {
            return false;
        }
    }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de erro te explica o problema.

Lá diz que o método connect() deve seguir o mesmo protótipo do método connect da classe mysqli. Ou seja, a mesma lista de parâmetros.

 

Esse é um dos princípios da Orientação a Objetos. Você faz uma classe herdar outra, mudando o comportamento de um método da classe pai. Esqueci o nome. Acho que é Override ou Overload... ou algo assim

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
    • Por Kakaroto1309
      Preciso de uma ajuda para conectar com o banco. Estava tudo funcionando normalmente com MYSQL agora parou tudo e estou tentando trocar para MYSQLI.
      Não acho o erro, já tentei de tudo.
       
      connection.php
      <? function conecta() { $host = "localhost"; $user = "admin"; $pass = "123456789"; $db = "principal"; //Conexão $conexao = mysqli_connect($host, $user, $pass) or die("Erro na conexão:".mysqli_error()); //Selecionar BD mysqli_select_db($conexao,$db) or die("Erro ao selecionar BD"); } function desconecta() { mysqli_close(); } ?> validate.php
      <? if (empty($_POST) and (empty($_POST['cpUsuario']) OR empty($_POST['cpSenha']))) { header("Location: ../login.php"); exit; } else { include("connection.php"); conecta(); $varUsuario = $_POST['cpUsuario']; $varSenha = sha1($_POST['cpSenha']); $stt = "SELECT ID,txNome,txNivel FROM tbUsuario WHERE txUsuario='$varUsuario' and txSenha='$varSenha' LIMIT 1"; $sql = mysqli_query($conexao,$stt) or die(mysqli_error($conexao)); $existe = mysqli_num_rows($sql); if ($existe == 0) { echo "Login invalido ou inexistente na base"; exit; } else { $resultado = mysqli_fetch_assoc($sql); if (!isset($_SESSION)) { session_start(); } $_SESSION['UsuarioID'] = $resultado['ID']; $_SESSION['UsuarioNOME'] = $resultado['txNome']; $_SESSION['UsuarioNIVEL'] = $resultado['txNivel']; header("Location: ../menu.php"); exit; } } ?> O erro agora está dando o seguinte:
      PHP Warning:  mysqli_query() expects parameter 1 to be mysqli, null given in /home4/public_html/connection/validate.php on line 17
       
      Linha 17 é essa:
      $sql = mysqli_query($conexao,$stt) or die(mysqli_error($conexao));
       
      Se eu tiro o $conexao do mysqli_query ele da erro de "mysqli_query() expects at least 2 parameters, 1 given" e se eu coloco o erro é "mysqli_query() expects parameter 1 to be mysqli, null given"
       
      Alguem sabe como posso resolver isso?
    • Por biakelly
      Meninos, estou recebendo um erro ao cadastrar usuário:
       
      Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/hqxz0o4/public_html/inc.functions.php on line 181
       
      Tal erro aponta para esta linha:
      if(mysqli_num_rows( $result ) >= 1) código completo:
       
      function already_exists($column, $value) { global $dbHandle, $db_tblUsrs; $sql = "SELECT * FROM $db_tblUsrs WHERE $column = '$value'"; $result = mysqli_query($dbHandle, $sql); if(mysqli_num_rows( $result ) >= 1) return true; else return false; } function check_login($username, $password) { global $dbHandle, $db_tblUsrs; $sql = "SELECT * FROM $db_tblUsrs WHERE CL_username = '$username' and CL_password = '$password'"; $result = mysqli_query($dbHandle, $sql); if(mysqli_num_rows($result) >= 1) { $row = mysqli_fetch_array($result,MYSQLI_ASSOC); $_SESSION['loggedIn'] = true; $_SESSION['userdbid'] = $row['CL_id']; $_SESSION['username'] = $row['CL_username']; return true; } else { $_SESSION['loginError'] = "<font color='#FCC329'>USUÁRIO OU SENHA INCORRETA</font>"; return false; } }  
       
      Poderiam me ajudar entender esse erro e corrigi-lo?
    • Por ndias
      Estou com duvida se minha conexão está encerrando.
       
      Utilizo PDO para me conectar:
       
      public static function getDb(){ try { $db = new \PDO( 'mysql:host=localhost;dbname=xyz;charset=utf8', 'xyz', 'xyz1234', array( \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION ) ); return $db; } catch (PDOException $e) { echo "Erro de Conexão " . $e->getMessage() . "\n"; exit; } } public function __construct(\PDO $db) { $this->db = $db; } public function verifica(){ $sql = "SELECT * FROM tabela "; $result = $this->db->query($sql); $rows = $result->fetch(); if($rows){ }else{ } } public function __destruct() { unset($this->db); foreach ($this as $key => $value) { unset($this->$key); } } Estou fazendo certo? Como posso verificar se a conexão está ficando aberta?
    • Por Marcos melo sales
      2   Eu tenho um aplicativo cliente> servidor, onde são estabelecidas conexões usando componentes Socket ( TClientSocketdo cliente se conecta ao TServerSocketservidor). Agora, desejo que os clientes se conectem primeiro a um terceiro aplicativo (um tipo de "ponte de conexão" ou "repetidor") que será executado em um Windows VPS e deve direcionar essas conexões dos clientes para o aplicativo do servidor em execução no servidor pc. Exemplo:

       
       
      Provavelmente (não tenho certeza) esse tipo de "ponte de conexão" ou "repetidor" que será executado no VPS pode ser semelhante ao aplicativo de servidor que será executado no servidor pc, mas não sei como conectar e fazer o gerenciamento da conexão / desconexão e o envio / recebimento de dados entre esses três aplicativos. Alguém poderia me dizer como isso pode ser feito de uma maneira simples e, se possível, também fornecer um exemplo de código sobre isso?
      Abaixo segue o código do cliente e servidor (servidor que será executado no servidor pc), isso é tudo o que tenho até agora.
       
       
      Cliente
      uses ScktComp; type TForm1 = class(TForm) ClientSocket1: TClientSocket; Timer1: TTimer; Label1: TLabel; procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); procedure Timer1Timer(Sender: TObject); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'CONNECTED'; end; procedure TForm1.ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'CONNECTING...'; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'DISCONNECTED'; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if not ClientSocket1.Active then ClientSocket1.Active := true; end; procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var s: string; begin s := Socket.ReceiveText; if s = 'CMD' then Socket.SendText('Hello, here is Client: ' + Socket.LocalHost + '!'); end; end. Servidor:
      uses ScktComp; type TForm1 = class(TForm) ListView1: TListView; ServerSocket1: TServerSocket; PopupMenu1: TPopupMenu; SON: TMenuItem; SOFF: TMenuItem; SCMD: TMenuItem; procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure SONClick(Sender: TObject); procedure SOFFClick(Sender: TObject); procedure SCMDClick(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); var Item: TListItem; begin Item := ListView1.Items.Add; Item.Caption := IntTostr(Socket.Handle); Item.SubItems.Add(Socket.RemoteAddress); Item.SubItems.Add(Socket.RemoteHost); Item.Data := Socket.Data; end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); var Item: TListItem; begin Item := ListView1.FindCaption(0, inttostr(Socket.Handle), false, true, false); if Item <> nil then Item.Delete; end; procedure TForm1.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; end; procedure TForm1.SONClick(Sender: TObject); begin ServerSocket1.Active := true; end; procedure TForm1.SOFFClick(Sender: TObject); begin ServerSocket1.Active := false; end; procedure TForm1.SCMDClick(Sender: TObject); begin if ListView1.Selected = nil then exit; ServerSocket1.Socket.Connections[ListView1.ItemIndex].SendText('CMD'); end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var s: string; begin s := Socket.ReceiveText; if s <> '' then ShowMessage(s); end; end.  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.