Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom Galera estou fazendo um consulta simples, mas só retorna o valor NULL como resultado.
e tbm aparece esse erro "Warning: mysql_fetch_array() expects parameter 1 to be resource, integer given in ".
esse eh meu codigo
<?php
require_once ('class_conexao.php');
$descricao = COPA;
$idloja = 980;
$sql = "SELECT * FROM gw_setoresimpressao WHERE descricao = '$descricao' AND idloja = '$idloja' ";
$objDb = new class_conexao();
$link = $objDb->conecta_mysql();
$result = $objDb->MysqlExecuta($link, $sql);
$total = mysql_fetch_array ($result);
var_dump($total);>
9 minutos atrás, Gabriel Heming disse:
Traga-nos o código do método MysqlExecuta. É importante saber o que ele faz e qual o retorno dele.
Também, execute o seguinte código, abaixo do método MysqlExecuta:
var_dump($result);
Quando dou var_dump aparece esse resultado 21:int 0E o código da função MysqlExecuta?
>
24 minutos atrás, Gabriel Heming disse:
E o código da função MysqlExecuta?
function MysqlExecuta($sql,$erro = 1) {
//$conexaoBd= new Conexao();
//VERIFICA A VERSÃO DO PHP
if (phpversion()=="5.6.255"){
$conexao =mysqli_connect($this->host, $this->usuario, $this->senha, $this->database);
mysqli_set_charset($conexao, "utf8");
mysqli_select_db($conexao, "$database");
date_default_timezone_set("Brazil/East");
$result= mysqli_query($conexao,$sql);
mysqli_close($conexao);
return $result;
}else{
$conexao = mysql_connect($this->host, $this->usuario, $this->senha, $this->database) or die(mysql_error());
mysql_set_charset("utf8");
mysql_select_db("$database", $conexao);
date_default_timezone_set("Brazil/East");
if(empty($sql))
return 0; //Erro na conexão ou no comando SQL
if (!($res = @mysql_query($sql))) {
if($erro)
echo $sql . mysql_error(). "\n" . "Ocorreu um erro na execução do Comando SQL no banco de dados";
exit;
}
return $res;
}
}O Warning é porque mysql_fetch_array espera sempre 2 parâmetros, porém o segundo é opcional. Veja a documentação: http://php.net/manual/pt_BR/mysqli-result.fetch-array.php - Warning não é um erro, é um aviso, no seu caso não deve interferir na consulta.
Obs: é recomendável usar mysqli_ no lugar de mysql_.
>
3 minutos atrás, marcosmarcolin disse:
O Warning é porque mysql_fetch_array espera sempre 2 parâmetros, porém o segundo é opcional. Veja a documentação: http://php.net/manual/pt_BR/mysqli-result.fetch-array.php - Warning não é um erro, é um aviso, no seu caso não deve interferir na consulta.
Obs: é recomendável usar mysqli_ no lugar de mysql_.
CERTO, MAS SE NÃO INTERFERE NA CONSULTA PQ NÃO RETORNA OS VALORES.
ESTAVA USANDO O MYSQLI MAS TAMBEM ESTAVA COM ESSE AVISO.
Tem muita coisa de errado na sua implementação.
A assinatura do método é:
function MysqlExecuta($sql,$erro = 1) {
Primeiro parâmetro a query e o segundo se é para exibir erros.
Na sua chamada está passando diferente:
$link = $objDb->conecta_mysql();
$result = $objDb->MysqlExecuta($link, $sql);
Ele está retornando sempre zero, pois, a primeira variável que está sendo passada para MysqlExecuta está vazia (provavelmente $link não possui nada, pois, o método conecta_mysql() não retorna nada). Olhe o código abaixo:
if(empty($sql))
return 0; //Erro na conexão ou no comando SQL
O código da função MysqlExecuta também não é legal, pois, ele está validando para uma versão em específico do PHP para utilizar MySQLi. O correto é utilizar sempre MySQLi.>
57 minutos atrás, Gabriel Heming disse:
Tem muita coisa de errado na sua implementação.
A assinatura do método é:
function MysqlExecuta($sql,$erro = 1) {
Primeiro parâmetro a query e o segundo se é para exibir erros.
Na sua chamada está passando diferente:
$link = $objDb->conecta_mysql();
$result = $objDb->MysqlExecuta($link, $sql);
Ele está retornando sempre zero, pois, a primeira variável que está sendo passada para MysqlExecuta está vazia (provavelmente $link não possui nada, pois, o método conecta_mysql() não retorna nada). Olhe o código abaixo:
if(empty($sql))
return 0; //Erro na conexão ou no comando SQL
O código da função MysqlExecuta também não é legal, pois, ele está validando para uma versão em específico do PHP para utilizar MySQLi. O correto é utilizar sempre MySQLi.
o que eu acho estranho eh o insert funcionar normalInsert é outra coisa, e algo que não está no seu problema/escopo atual. Basta seguir o que foi mencionado anteriormente que irá funcionar.
>
8 minutos atrás, Gabriel Heming disse:
Insert é outra coisa, e algo que não está no seu problema/escopo atual. Basta seguir o que foi mencionado anteriormente que irá funcionar.
Fiz as alterações e agora aparece o seguinte erro " resource(6, mysql result) "
Isso não é erro, deve ter algum var_dump no seu código. Provavelmente o que eu pedi para colocar anteriormente, ele só tem intenção de debug.
>
11 minutos atrás, Gabriel Heming disse:
Isso não é erro, deve ter algum var_dump no seu código. Provavelmente o que eu pedi para colocar anteriormente, ele só tem intenção de debug.
Man uma pergunta, sera que a função MysqlExecuta está bloqueando as extensão mysqli ?
pq eu jah usei esses codigos em casa sem essa função MysqlExecuta e em casa funcionou tudo normal. Agora aqui na empresa tenho que usar essa função e não consigo testar as regras de negocio.
>
14 horas atrás, felone disse:
sera que a função MysqlExecuta está bloqueando as extensão mysqli ?
Olha o que eu citei lá em cima.
>
17 horas atrás, Gabriel Heming disse:
O código da função MysqlExecuta também não é legal, pois, ele está validando para uma versão em específico do PHP para utilizar MySQLi. O correto é utilizar sempre MySQLi.
Se não estiver naquela versão em específico, ele acaba utilizando a outra biblioteca.
>
Em 30/10/2018 at 11:38, felone disse:
CERTO, MAS SE NÃO INTERFERE NA CONSULTA PQ NÃO RETORNA OS VALORES.
ESTAVA USANDO O MYSQLI MAS TAMBEM ESTAVA COM ESSE AVISO.
Dica: debugar o código linha a linha e descobrir onde está parando a execução, não tem erro e pode ser um caso específico.
Talvez não seja sua intenção, mas nunca responda em Caps Lock, parece que está gritando e ninguém ajudará desta maneira. (Y)
Traga-nos o código do método MysqlExecuta. É importante saber o que ele faz e qual o retorno dele.
Também, execute o seguinte código, abaixo do método MysqlExecuta:
var_dump($result);