Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Alguem sabe o porque desse erro? e como resolve-lo?? cadastrouser.php ----- http://pastebin.com/T1V7TyV9 formulario.php ----- http://pastebin.com/NyDbjbjG conexão.php --- http://pastebin.com/ciM3hBSr erro logo abaixo Warning: include(lib/conexao.php): failed to open stream: No such file or directory in C:Program Files (x86)EasyPHP-DevServer-14.1VC11datalocalwebprojectsProjeto Weblibcadastrouser.phpon line 3 Warning: include(): Failed opening 'lib/conexao.php' for inclusion (include_path='.. C:phppear') in C:Program Files (x86)EasyPHP-DevServer-14.1VC11datalocalwebprojectsProjeto Weblibcadastrouser.php on line 3 Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:Program Files (x86)EasyPHP-DevServer-14.1VC11datalocalwebprojectsProjeto Weblibcadastrouser.php on line 7
Consegui consertar o primeiro erro, mas agora ele está me mostrando esse erro
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 2
Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 2
Warning: mysql_connect(): in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 2
Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 3
Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
Os dois primeiros erros são falhas nos diretórios dos arquivos. Verifique se os diretórios existem e estão escritos corretamente. Procure utilizar o caminho absoluto também, caso prefira maior precisão nisso (exemplo de diretório absoluto: /home/nome_da_minha_conta/public_html/minha_pagina.php). Inserindo o caminho absoluto nos seus includes e requires esse tipo de erro vai desaparecer, além de outras vantagens.
O terceiro erro, o rapaz acima já respondeu. Acrescentando, PDO é mais complicado, porém mais rápido que mysqli ainda (uma diferença que nem se pode levar em consideração de tão mínima, mas é mais rápido). Já o mysqli_ é bastante completo também e extremamente simples de se trabalhar, principalmente pra quem já tem costume de usar o antigo mysql.
Vou deixar abaixo uma classe razoavelmente simples pra você usar o mysqli_ se quiser e uns exemplos também:
<?php
$host = "localhost";
$usuario = "root";
$senha = "";
$banco = "meu_db";
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;
}
}
}
// SELECT SIMPLES EM UMA TABELA COM OS CAMPOS id E nome
try{
$con = Conexao::getInstance();
$res = $con->query("SELECT * FROM tabela");
while($m=$res->fetch_array(MYSQLI_ASSOC)){
echo $m["id"];
echo "<hr>";
echo $m["nome"];
}
// OBTÉM O TOTAL DE LINHAS SELECIONADAS
$totalRegistros = $res->num_rows;
}catch(Exception $e){
echo $e->getMessage();
}
// SELECT COMPLEXO EM UMA TABELA COM OS CAMPOS id E nome $con = Conexao::getInstance();
$res = $con->query("SELECT * FROM tabela WHERE id='1' ORDER BY nome ASC LIMIT 1,5");
while($m=$res->fetch_array(MYSQLI_ASSOC)){
echo $m["id"];
echo "<hr>";
echo $m["nome"];
}
$totalRegistros = $res->num_rows; echo $e->getMessage();
}
// UPDATE EM UMA TABELA $con = Conexao::getInstance();
$res = $con->query("UPDATE tabela SET nome='Meu Nome' WHERE id='1'");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows; echo $e->getMessage();
}
// DELETE EM UMA TABELA
try{
$con = Conexao::getInstance();
$res = $con->query("DELETE FROM tabela WHERE id='1'"); echo $e->getMessage();
}
/*
Além disso, você pode fazer quaisquer outras consultas normalmente, como faria no mysql_query antigo.
Este é o modo orientado a objetos, torna a conexão mais simples e confiável, além do método try{}catch(){}
que irá lhe avisar sobre quaisquer erros que tenham ocorrido na sua query. Desta forma, torna inútil e desnecessária
a utilização do OR DIE();
*/
?>
E, antes que pergunte: sim, você é obrigado a trocar o seu mysql_ pelo mysqli_ ou PDO, senão simplesmente nada vai funcionar nas suas páginas. Como diz o próprio erro: A extensão mysql_ está depreciada e será removida no PHP 7 e posteriores, utilize mysqli_ ou PDO em vez disso.
Uma outra observação também é que você não é obrigado a instanciar a conexão toda vez que for fazer uma query, pode fazer isso uma só vez, mesmo fora do try catch, assim:
<?php
$con = Conexao::getInstance();
// SELECT COMPLEXO EM UMA TABELA COM OS CAMPOS id E nome
try{
$res = $con->query("SELECT * FROM tabela WHERE id='1' ORDER BY nome ASC LIMIT 1,5");
while($m=$res->fetch_array(MYSQLI_ASSOC)){
echo $m["id"];
echo "<hr>";
echo $m["nome"];
}
$totalRegistros = $res->num_rows;
}catch(Exception $e){
echo $e->getMessage();
}
// UPDATE EM UMA TABELA
try{
$res = $con->query("UPDATE tabela SET nome='Meu Nome' WHERE id='1'");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
// DELETE EM UMA TABELA
try{
$res = $con->query("DELETE FROM tabela WHERE id='1'"); echo $e->getMessage();
}
?>
Isso também funciona.
Eu sou muito ruim com PhP não entendi praticamente nada do seu codigo kkkkkkk, você pode traduzir o codigo meu que está lá em cima para o MySQLI ou PDO de uma forma que funcione? to quebrando a cabeça com isso a dias, antigamente era mais facil agora tá foda viu...
Coloca a parte do codigo que esta dando erro aqui
Eu atualizei o codigo, não sei se está certo, ou o que está errado mas ele retornou um erro pra mim
conexão.php
<?php
$host = "http://127.0.0.1:8888/modules/phpmyadmin414x151009205647";
$usuario = "root";
$senha = "";
$banco = "amarenaacai";
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;
}
}
}
cadastrouser.php
<?php
try{
$con = Conexao::getInstance();
$res = $con->query("INSERT INTO usuarios (nome, email, senha, nascimento, telefone, endereco) values
('".$_POST['nome']."','".$_POST['email']."','".$_POST['senha']."','".$_POST['nascimento']."','".$_POST['telefone']."','".$_POST['endereco']."',)");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>
ele retornou esse erro pra mim
Fatal error: Class 'Conexao' not found in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
"Class 'Conexao' não encontrado em..."
O erro retornado diz tudo.
Eu sei que tenho que definir a classe conexão no arquivo cadastrouser.php mas como faço isso?
Amigo eu não mexo muito com classe.
Faça um arquivo php, cole esse script e configure de acordo.
<?php
$servidor = 'localhost';
$usuario = 'root';
$senha = '';
$banco = '';
// Conecta-se ao banco de dados MySQL
$mysqli = new mysqli($servidor, $usuario, $senha, $banco);
// Caso algo tenha dado errado, exibe uma mensagem de erro
if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());
Depois é so incluir ele onde vc quiser fazer conexão.
Ou use o link de conexão diretamente.
$con= new mysqli('localhost', 'root', '', 'mydb');
eu fiz dessa forma e continua dando erro
Warning: mysqli::mysqli(): in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 7
Warning: mysqli::mysqli(): in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line 7
Notice: php_network_getaddresses: getaddrinfo failed: Este host n�o � conhecido. in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line9
Notice: Undefined variable: con in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
Fatal error: Call to a member function query() on a non-object in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
conexao.php
<?php
$servidor = 'http://127.0.0.1:8888/modules/phpmyadmin414x151009205647';
$usuario = 'root';
$senha = '';
$banco = 'amarenaacai';
// Conecta-se ao banco de dados MySQL
$mysqli = new mysqli($servidor, $usuario, $senha, $banco);
// Caso algo tenha dado errado, exibe uma mensagem de erro
if (mysqli_connect_errno()) trigger_error(mysqli_connect_error());
?>
cadastrouser.php
<?php
include "conexao.php";
try{
$res = $con->query("INSERT INTO usuarios (nome, email, senha, nascimento, telefone, endereco) values
('".$_POST['nome']."','".$_POST['email']."','".$_POST['senha']."','".$_POST['nascimento']."','".$_POST['telefone']."','".$_POST['endereco']."',)");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>Amigo usa desse jeito aqui e me fiz o que retorna. Não esquece de configura.
<?php
try{
$con = new mysqli('localhost', 'root', '', 'bd');
$res = $con->query("INSERT INTO usuarios (nome, email, senha, nascimento, telefone, endereco) values
('".$_POST['nome']."','".$_POST['email']."','".$_POST['senha']."','".$_POST['nascimento']."','".$_POST['telefone']."','".$_POST['endereco']."',)");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>Veja o erro que ele te retornou. Basta que você faça um include() ou require(), require_once(), include_once(), o que quiser na sua página cadastrouser.php e o problema vai deixar de existir. Recomendo grandemente que use a classe que te enviei, é extremamente simples e os disparos de erros estão bem trabalhados nela. Acredite, vai facilitar a sua vida depois que aprender a usar e vale o esforço.
Coloque a página conexao.php na mesma pasta que a cadastrouser.php e insira exatamente isso na primeira linha do seu código: require_once("conexao.php");
>
Eu atualizei o codigo, não sei se está certo, ou o que está errado mas ele retornou um erro pra mim
conexão.php
<?php
$host = "http://127.0.0.1:8888/modules/phpmyadmin414x151009205647";
$usuario = "root";
$senha = "";
$banco = "amarenaacai";
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;
}
}
}
cadastrouser.php
<?php
try{
$con = Conexao::getInstance();
$res = $con->query("INSERT INTO usuarios (nome, email, senha, nascimento, telefone, endereco) values
('".$_POST['nome']."','".$_POST['email']."','".$_POST['senha']."','".$_POST['nascimento']."','".$_POST['telefone']."','".$_POST['endereco']."',)");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>
ele retornou esse erro pra mim
Fatal error: Class 'Conexao' not found in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
>
Amigo usa desse jeito aqui e me fiz o que retorna. Não esquece de configura.
<?php
try{
$con = new mysqli('localhost', 'root', '', 'bd');
$res = $con->query("INSERT INTO usuarios (nome, email, senha, nascimento, telefone, endereco) values
('".$_POST['nome']."','".$_POST['email']."','".$_POST['senha']."','".$_POST['nascimento']."','".$_POST['telefone']."','".$_POST['endereco']."',)");
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>
eu fiz da forma que você mostrou acima e ai o arquivo conexao.php deixou de existir, ficou só o cadastrouser.php
e ele deu esse erro agora...
Warning: mysqli::mysqli(): in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 4
Warning: mysqli::query(): Couldn't fetch mysqli in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 7
Notice: Trying to get property of non-object in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\cadastrouser.php on line 9
Teste o código desse jeito aqui:
<?php
require_once("conexao.php");
try{
$con = Conexao::getInstance();
$nome = $_POST["nome"];
$email = $_POST["email"];
$senha = $_POST["senha"];
$nascimento = $_POST["nascimento"];
$telefone = $_POST["telefone"];
$endereco = $_POST["endereco"];
$campos = "nome, email, senha, nascimento, telefone, endereco";
$valores = "'$nome', '$email', '$senha', '$nascimento', '$telefone', '$endereco'";
$query = "INSERT INTO usuarios (".$campos.") VALUES(".$valores.")";
$res = $con->query($query);
// RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE
$totalLinhasAfetadas = $res->affected_rows;
}catch(Exception $e){
echo $e->getMessage();
}
?>
Coloque a página conexao.php na mesma pasta que a cadastrouser.php. Vale lembrar que esse código aqui é pra usar com a classe que te passei anteriormente.
>
Teste o código desse jeito aqui:
<?phprequire_once("conexao.php");try{ $con = Conexao::getInstance(); $nome = $_POST["nome"]; $email = $_POST["email"]; $senha = $_POST["senha"]; $nascimento = $_POST["nascimento"]; $telefone = $_POST["telefone"]; $endereco = $_POST["endereco"]; $campos = "nome, email, senha, nascimento, telefone, endereco"; $valores = "'$nome', '$email', '$senha', '$nascimento', '$telefone', '$endereco'"; $query = "INSERT INTO usuarios (".$campos.") VALUES(".$valores.")"; $res = $con->query($query); // RETORNA O TOTAL DE LINHAS AFETADAS PELO UPDATE $totalLinhasAfetadas = $res->affected_rows;}catch(Exception $e){ echo $e->getMessage();}?>
Coloque a página conexao.php na mesma pasta que a cadastrouser.php. Vale lembrar que esse código aqui é pra usar com a classe que te passei anteriormente.
agora deu esse erro
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[/size]C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line [/size]58
[/size]
Warning: mysqli::mysqli(): in [/size]C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line [/size]26
Warning: mysqli::mysqli(): in [/size]C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Projeto Web\lib\conexao.php on line [/size]26
A Conexao falhou: php_network_getaddresses: getaddrinfo failed: Este host n�o � conhecido.[/size]
to achando que o problema tá no servidor do PhpMyAdmin vou tentar upar em algum host pra ver se funciona[/size]
tentei em outro host e mesmo assim da o mesmo erro não to entendendo.....
Das duas, uma: ou a versão do seu PHP é incompatível, ou o seu host não funciona direito. Esse é o código que uso em 70% dos sites que administro, e é uma quantidade bastante razoável de sites. Em nenhum dá esse problema, todos rodam a versão 5.3 ou 5.5 nativa do PHP.
Mas repara em uma coisa:
>
trict Standards: Declaration of Conexao::connect() should be compatible with mysqli::connect($host = NULL, $user = NULL, $password = NULL, $database = NULL, $port = NULL, $socket = NULL)
Esse erro diz que o host, user, password, database, port e socket estão indo vazios pra sua conexão. Você tá tentando rodar esse script em qual hospedagem? Ou é sem servidor local?
Então antes ele estava local agora eu hospedei ele e deu esse erro
A Conexao falhou: Access denied for user '1027537'@'localhost' (using password: YES)
>
Então antes ele estava local agora eu hospedei ele e deu esse erro
A Conexao falhou: Access denied for user '1027537'@'localhost' (using password: YES)
Erro de parâmetro.
Verifique o host, user, password e banco de dados no seu site de hospedagem.
Quando tiver duvida crie um topico.
Não faço ideia do que q tá acontecendo já verifiquei host, nome de usuario, senha, db, tudo, tá tudo certo e mesmo assim ainda continua dando isso...
Bom dia! Eu sei porque deu o erro e sei resolver.Após as correções, os seus códigos foram testados e funcionaram com sucesso!
1º Erro: O nome do servidor correto é localhost
2º Erro: O usuário é root
3º Erro: O Comando SQL no final não pode ter virgula "',)") ou certo é "')")
Para ajudar você e mais pessoas, eu elaborei 6 videos aulas que demonstra desde do inicio como instalar, configurar e testar o cadastro de usuários utilizando o EasyPHP, por favor acesse:
1º - Baixando e Instalando EasyPHP Help PW 001 - https://youtu.be/sZ_fB-kJ1ak
2º - Testando EasyPHP e criando base e tabela MySQL Help PW 002 - https://youtu.be/AyuTjYc-GQo
3º - Realizando conexão com Servidor EasyPHP Help PW 003 - https://youtu.be/Qq5KjcYBejM
4º - Realizando conexão com Base de dados EasyPHP Help PW 004 - https://youtu.be/RMiw73QqCp4
5º - Criando Formulário Usuários EasyPHP Help PW 005 - https://youtu.be/cMciXk2jEPc
6º - Resolvendo problema de SQL EasyPHP Help PW 006 - https://youtu.be/Ur30CkcyP2Q
Também deixei o código fonte com as devidas correções, o link para baixar é http://programador.wilson.nom.br/index.php?acao=iniciar_download_www.programador.wilson.nom.br%20download_952348474
Nossa cara valeu, deu muito certo, tudo explicadinho, e com video aula ainda, funcionou perfeitamente...... valeu valeu.... otimo programador você, codigo muito simples e limpo
O primeiro erro é o diretório do arquivo que estar errado, verifique o caminho e se estar escrito corretamente.
O segundo eu não entendi direito mas vc pode da uma olhada nesse link -> http://stackoverflow.com/questions/62658/getting-pear-to-work-on-xampp-apache-mysql-stack-on-windows
Ja o terceiro é porq você estar usando mysql_query que ja estar obsoleta, então sera bom você usar ou msqli ou PDO. Eu recomendo o PDO.
Nesse site tem o basico do PDO para o CRUD -> http://www.devmedia.com.br/crud-com-php-pdo/28873