Ir para conteúdo

POWERED BY:

Arquivado

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

J.Victtor-SP

Warning: mysql_query(): 5 is not a valid MySQL-Link resource in /**/ o

Recommended Posts

Estou fazer um insert e quando eu mando o comando para o banco retorna esse erro

 

Warning: mysql_query(): 5 is not a valid MySQL-Link resource in /**/ on line 130

 

Essa é uma função q eu crie para gerar o código já dei um echo nele e ta retorno um valor

function geracod($letra, $numero, $tabela, $codTab){

		$letramini = 'abcdefghijklmnopqrstuvwxyz';
		$letraMai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$num = '0123456789';
		$cod = '';
		$codOfi = '';
		if($letra){ $cod .= $letraMai.$letramini; }
		if($numero){ $cod .= $num; }
		$codNum = strlen($cod);

		include("conexao.php");
		do{
		for($v = 0; $v < 11; $v++){
			$posCod = mt_rand(1, $codNum); 
			$codOfi .= $cod[$posCod-1]; }

		$pesCod = "SELECT * FROM ".$tabela." WHERE '".$codTab."' = '".$codOfi."'";
		$pesCodConec = mysql_query($pesCod, $conexao)or die('Erro na pesquisa do codigo.<br>'.mysql_error());
		if($pesCodConec){ $pesCodLin = mysql_num_rows($pesCodConec); }

		}while($pesCodLin == 1);

		include("conexaoFecha.php");

		return $codOfi;

	}

esse é o insert

$codEdi = geracod($l = false, $n = true, $t = 'tb_editora', $cod = 'cd_editora');
                echo $codEdi;
                $InEdtr = "INSERT INTO tb_editora(cd_editora, nm_editora)VALUES('".$codEdi."', '".$_POST['editora']."')";
                $InEdtrConec = mysql_query($InEdtr, $conexao) or die('Erro no camando da Editora.<br>'.mysql_error());// linha 130

Compartilhar este post


Link para o post
Compartilhar em outros sites

Há erro na consulta e mysql_query falhou. Veja mais detalhes e a solução neste link

 

 

PS: funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz algumas alteraçoes e agora da outro erro. Na minha funçao eu coloco 4 parametros

$codEdi = geracod($l = false, $n = true, $t = 'tb_editora', $cod = 'cd_editora');

mais quando eu dou var_dump os paramentro eles alterão ficou assim

 

string(5) "tb_banco" codigo da tabela // ele tava assim $cod = 'cd_editora'
string(45) "SELECT * FROM 1 WHERE "tb_banco" = "XfxvCfJYyrM"" variavel do select
bool(true) nome da tabela // a variavel $t = 'tb_editora' que contem o nome da tabela vira uma booleana
Erro na pesquisa do codigo.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 WHERE "tb_hq" = "XfxvCfJYyrM"' at line 1

 

sendo que antes desse insert eu faço outro que da certo agora quando ele faz esse da erro. Esse é o outro insert

$codEdi = geracod($l = false, $n = true, $t = 'tb_editora', $cod = 'cd_editora');
                echo $codEdi.'sdfghjkmsdfghjksdfghjkl.<br>';
                $InEdtr = "INSERT INTO tb_editora(cd_editora, nm_editora)VALUES('".$codEdi."', '".$_POST['editora']."')";
                $InEdtrConec = mysql_query($InEdtr, $conexao) or die('Erro no camando da Editora.<br>'.mysql_error());

Minha funçao ta assim agora a unica alteraçao foi o select

function geracod($letra, $numero, $tabela, $codTab){

		include("conexao.php");
		$letramini = 'abcdefghijklmnopqrstuvwxyz';
		$letraMai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$num = '0123456789';
		$cod = '';
		$codOfi = '';
		if($letra){ $cod .= $letraMai.$letramini; }
		if($numero){ $cod .= $num; }
		$codNum = strlen($cod);

		do{
		for($v = 0; $v < 11; $v++){
			$posCod = mt_rand(1, $codNum); 
			$codOfi .= $cod[$posCod-1]; }
			//$teste = "cd_categoria";
		$pesCod = 'SELECT * FROM '.$tabela.' WHERE "'.$codTab.'" = "'.$codOfi.'"'; //	deu certo com a editora so ta dando erro a categoria
		echo var_dump($codTab)."codigo da tabela<br>";
		echo var_dump($pesCod)."variavel do select<br>";
		echo var_dump($tabela)."nome da tabela<br>";
		$pesCodConec = mysql_query($pesCod, $conexao)or die('Erro na pesquisa do codigo.<br>'.mysql_error());
		echo var_dump($pesCodConec)."variavel do comando da conexao<br>";
		if($pesCodConec){ $pesCodLin = mysql_num_rows($pesCodConec); }

		}while($pesCodLin == 1);

		//include("conexaoFecha.php");

		return $codOfi;

	}

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

SELECT * FROM 1 WHERE ...

"1" não é um nome válido de tabela do mysql

 

Você está passando parâmetros errados.

Passe só o valor, sem atribuir a variáveis:

 

geracod(false, true, 'tb_editora', 'cd_editora')

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Talvez sejam as variáveis que está no arquivo incluso, defina variáveis globais.

global $conexao;

e outra tenta assim:

mysql_query($conexao, $pesCod) or die(mysql_error());//para ver o real erro

#RELEMBRANDO QUE O MYSQL FICOU OBSOLETO. MIGRE PARA O MYSQLI OU PDO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não mudou nada continua dando o mesmo erro

Mostre o que você mudou. Ajude a gente a ajudar você...

 

 

Se as variáveis "mudam de valor", é por que você está definindo novos valores para elas em algum lugar. $tabela não vai receber o valor "1" num passe de mágica. Em algum lugar você mudou o valor dela. Pode, inclusive, ser nesse conexao.php incluso via include()

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei que o mysql esta obsoleto mais é que o meu projeto ficou muito grande então não posso migrar para PDO ou mysqli atualmente quando eu terminar ele vou migrar para PDO. Eu coloquei a variavel $conexao como global porem quando eu rodo o site aparece esse erro.

 

Notice: Undefined variable: conexao

 

A função só da erro de sintaxe pois as variável são alteradas mais isso não faz sentido porque eu uso essa função duas vezes na primeira ele inseri direitinho e aparece no banco o dado oque eu inseri. Agora quando eu uso pela segunda vez as variáveis são alteradas eu não sei o motivo pois eu não muda nada

 

essa é a pagina conexao.php

<?php

	$host = "localhost";
	$usuario = "root";
	$banco = "db_hq";
	$senha = "usbw";
	$conexao = mysql_connect($host,$usuario,$senha);

	if($conexao){

		mysql_select_db($banco) or die('Erro ao selecionar o banco.<br>'.mysql_error());

	}else{

		die('Erro na conexão.<br>'.mysql_error());
		
	}

?>

pagina onde esta a funçao

<?php

	include("conexao.php");
	global $conexao;
	function geracod($letra, $numero, $tabela, $codTab){

		$letramini = 'abcdefghijklmnopqrstuvwxyz';
		$letraMai = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
		$num = '0123456789';
		$cod = '';
		$codOfi = '';
		if($letra){ $cod .= $letraMai.$letramini; }
		if($numero){ $cod .= $num; }
		$codNum = strlen($cod);

		do{
		for($v = 0; $v < 11; $v++){
			$posCod = mt_rand(1, $codNum); 
			$codOfi .= $cod[$posCod-1]; }
		$pesCod = 'SELECT '.$codTab.' FROM '.$tabela.' WHERE '.$codTab.' = '.$codOfi.'';
		echo var_dump($codTab)."codigo da tabela<br>";
		echo var_dump($pesCod)."variavel do select<br>";
		echo var_dump($tabela)."nome da tabela<br>";
		$pesCodConec = mysql_query($pesCod, $conexao)or die(mysql_error());
		echo var_dump($pesCodConec)."<br>variavel do comando da conexao<br>";
		if($pesCodConec){ $pesCodLin = mysql_num_rows($pesCodConec); }

		}while($pesCodLin == 1);

		return $codOfi;

	}

	include("conexaoFecha.php");

?>

esse primeiro insert da certo

$codEdi = geracod(false, true, 'tb_editora', 'cd_editora');
    echo $codEdi;
    $InEdtr = "INSERT INTO tb_editora(cd_editora, nm_editora)VALUES('".$codEdi."', '".$_POST['editora']."')";
    $InEdtrConec = mysql_query($InEdtr, $conexao) or die('Erro no camando da Editora.<br>'.mysql_error());

esse insert da erro pois as variáveis são alteradas não sei como

$codCate = geracod(false, true, 'tb_categoria', 'cd_categoria');
    echo var_dump($le)."<br>";
    echo var_dump($nu)."<br>";
    echo var_dump($ta)."<br>";
    echo var_dump($_POST['categoria'])."<br>";
    $inCat = "INSERT INTO tb_categoria(cd_categoria, qt_categoria)VALUES('".$codCate."', '".$_POST['categoria']."')";
    $inCatConec = mysql_query($inCat, $conexao)or die('Erro no comando da categoria.<br>'.mysql_error());

lembrando que esses dois insert ficam na mesma pagina

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

global $conexao;

 

coloca dentro da função.

Já iria digitar a mesma coisa rsrs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu coloquei a variável global dentro da função funcionou porem o erro de os valores das variáveis serem trocadas continua. Caso eu faça uma classe que possui os mesmo atributos dessa função e dentro dessa classe eu faça um método onde o metodo gera um codigo aleatoria. Poderia solucionar esse erro que estar ocorrendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa descobrir onde as variáveis estão sendo alteradas. Não adianta criar classes a mais, se não localizar a fonte do problema.

Faça debug do código, nem que seja enchendo de echo/var_dump.

Veja os valores dessas variáveis durante a execução, dentro e fora da função. Você só pegou os valores dentro da função. O problema pode estar fora dela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descobri o erro. Andei estudando um pouco mais e vi no manual do PHP que não precisa colocar a string de conexão na função mysql_query();.

//ANTES
$inCatConec = mysql_query($inCat, $conexao)or die('Erro no comando da categoria.<br>'.mysql_error());

//AGORA
$inCatConec = mysql_query($inCat)or die('Erro no comando da categoria.<br>'.mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Descobri o erro. Andei estudando um pouco mais e vi no manual do PHP que não precisa colocar a string de conexão na função mysql_query();.

Só precisa colocar a conexão se houver mais quer uma. Caso contrário, o PHP sempre usa a última conexão aberta.

E pra evitar essa confusão, a extensão mysqli exige o link da conexão. Assim não há o risco de usar a conexão errada

 

Mas vale lembrar que seu código está obsoleto. Funções mysql_* estão obsoletas desde o PHP 5.5 e já foram removidas no PHP 7. Prefira usar MySQLi ou PDO. Veja mais aqui: http://rberaldo.com.br/mysql-obsoleto-php/

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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