Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom pessoa eu estou iniciando em POO, e esta aparencedo uns erros que estão me encomodadom,
pois acredito eu que não seja nada de mais, mas não estou sabendo achar o problema.
bom primeira mente eu estou criando uma class para conexao, para conectar ao banco e mostrar uns arquivos,
mas esta me aparecendo um erro
Warning: mysql_query() expects parameter 2 to be resource, string given in C:\xampp\htdocs\POO\class.conexao.php on line 14
Segue o meu codigo abaixo.
<?php
class conexao{
private $servidor ='localhost';
private $login='root';
private $senha='';
private $banco='livro';
public function conexao(){
mysql_connect($this->servidor,$this->login,$this->senha);
}
public function selecionar(){
$sql= 'SELECT * FROM mensagens';
$rs= mysql_query($this->banco,$sql);
While($row=mysql_fetch_object($rs)){
echo $row['nome']."</br>";
echo $row['email']."</br>";
echo $row['msg']."</br>";
}
}
}
$conn= new conexao();
$conn->selecionar();
?>
Bom gostaria de uma ajuda, se possivel.
Bom dia, realizei a troca de você sujeriu, ficando assim o meu codigo:
<?php
class conexao {
private $servidor = 'localhost';
private $login = 'root';
private $senha = '';
private $banco = 'livro';
public function conexao() {
return mysql_connect($this->servidor, $this->login, $this->senha) or die("O servidor não responde!");
}
public function selecionar() {
$sql = 'SELECT * FROM mensagens';
$rs = mysql_query($sql,$this->banco());
While ($linha = mysql_fetch_array($rs)) {
echo $linha['nome'] . "</br>";
echo $linha['email'] . "</br>";
echo $linha['msg'] . "</br>";
}
}
}
$conn = new conexao();
$conn->selecionar();
?>
Mas continua me retornando o mesmo merro
Warning: mysql_query() expects parameter 2 to be resource, string given in C:\xampp\htdocs\POO\class.conexao.php on line 16
Warning: mysql_fetch_array() expects parameter 1 to be resource, null given in C:\xampp\htdocs\POO\class.conexao.php on line 17
O 2º parâmetro que você está passando para o mysql_query é apenas o nome do seu banco...
Ele pede um link de referência, é realmente o próprio mysql_connect.
você poderia fazer assim:
public function selecionar() {
$sql = 'SELECT * FROM mensagens';
$rs = mysql_query($sql,conexao());
While ($linha = mysql_fetch_array($rs)) {
echo $linha['nome'] . "</br>";
echo $linha['email'] . "</br>";
echo $linha['msg'] . "</br>";
}
}
Não testei, mas provavelmente vai dar certo.
Ah, você tbm não se conectou no banco, apenas com esse arquivo,
você apenas instanciou a classe e executou a função selecionar() que é um select...
Bom, Obrigado a todos que tentaram me ajudar,
consegui resolver o problema,
para aqueles que estão com o mesmo problema que eu estava
segue a baixo o codigo
<?php
class conexao {
private $servidor = 'localhost';
private $login = 'root';
private $senha = '';
private $banco = 'livro';
public function conexao() {
mysql_connect($this->servidor, $this->login, $this->senha) or die("O servidor não responde!");
}
public function selecionar() {
$con = mysql_select_db ($this->banco);
$sql = 'SELECT * FROM mensagens';
$rs = mysql_query($sql);
While ($linha = mysql_fetch_array($rs)) {
echo $linha['nome'] . "</br>";
echo $linha['email'] . "</br>";
echo $linha['msg'] . "</br>";
echo '---';
}
}
}
$conn = new conexao();
$conn->selecionar();
?>É uma opção tbm, colocar o 2º parâmetro ou não do mysql_query.
E você não está conectando ao banco...
Troque a classe conexao para
function __construct(){
mysql_connect....//continua com a conexao
}
Aí assim toda vez que instanciar a classe sua conexao já vai estar criada.
Para te auxiliar dê uma lida: Construtores e Destrutores
>
É uma opção tbm, colocar o 2º parâmetro ou não do mysql_query.
E você não está conectando ao banco...
Troque a classe conexao para
function __construct(){
mysql_connect....//continua com a conexao
}
Aí assim toda vez que instanciar a classe sua conexao já vai estar criada.
Para te auxiliar dê uma lida: Construtores e Destrutores
Por acaso não sabes onde eu posso baixar aulas de POO com php ??
estou tentando apreder..
Aqui tem uma seção de tutorais, explicando mais a raiz ( que é o mais importante).
Eu particularmente, gosto de ver tutoriais com um objetivo, que objetivo é esse?
busco sempre algo prático não muito só teoria, por exemplo fazendo um sistema de newsletter OO,
cadastro OO, login OO, esse tipo de coisa, eu acho mais fácil de aprender.
Depois dessa inrolação ai, só queria te dar a dica de estudar a base que é muito importante e depois
quando já tiver essa base partir para esse tipo de conceito, vídeos.
E não guarde ideia na cabeça, sei lá, você algo tente trazer isso para o mundo da Programação, e fazer seu sistema,
só aprende assim.
>
Aqui tem uma seção de tutorais, explicando mais a raiz ( que é o mais importante).
Eu particularmente, gosto de ver tutoriais com um objetivo, que objetivo é esse?
busco sempre algo prático não muito só teoria, por exemplo fazendo um sistema de newsletter OO,
cadastro OO, login OO, esse tipo de coisa, eu acho mais fácil de aprender.
Depois dessa inrolação ai, só queria te dar a dica de estudar a base que é muito importante e depois
quando já tiver essa base partir para esse tipo de conceito, vídeos.
E não guarde ideia na cabeça, sei lá, você algo tente trazer isso para o mundo da Programação, e fazer seu sistema,
só aprende assim.
cara respeito muito a tua opnião, e to seguindo ela, eu ja estava lendo um livor sobre poo (Programando com orientação a Objetos)(Autor: Pablo Dall'Oglio) (Da NOVATEC));
Meu interesse é melhorar a forma que eu programo, não sou nenhum programadorzudo de PHP, mas gosto
muito da linguaem..
Bom era isso, vou seguir a tua dica e a qualquer duvidade, depois de dar uma pesquisada, eu posto aqui..
Abração e Obrigado pelo dica e pela Ajuda..
Para PHP, eu não recomendaria o Pablo Dal'Oglio, ele descreve alguns padrões de forma errônea e confusa.
Recomendo o Matt Zandstra que é muito conceituado. Há um tópico falando sobre isso. Mas para OO em php, seria com ele.
Entendendo e Dominando o PHP - Matt Zandstra
Após a leitura e aprendizagem do livro acima citado, vai desse aqui:
PHP Objects, Patterns, and Practice
Minha única recomendação ao de cima, é que está em PHP. Esse assunto de Design Patterns, o melhor seria algo do grupo GoF (Gang of Four) ou do Martin Fowler que estará no brasil na qcon.
Warning: mysql_query() expects parameter 2 to be resource, string given in E:\XAMPP\htdocs\arrebite\class\conexao.php on line 15 Erro:
galera estou com o mesmo problema tambem nesse codigo aqui:
esse é o arquivo
conexao.php
<?php
class conexao{
public $servidor ="localhost";
public $login="root";
public $senha="";
public $banco="arrebite";
public function conexao(){
mysql_connect($this->servidor,$this->login,$this->senha);
}
public function erro(){
die("Erro: ".mysql_error());
}
public function executar($sql){
return mysql_query($this->banco,$sql);
}
}
?>menu.php
<?php
include_once('conexao.php');
class menu{
public $conn;
public $rscat;
public function __construct(){
$this->conn = new conexao();
}
public function cat(){
$sql="select * from categorias order by ordem asc" or $this->conn->erro();
echo $this->rscat=$this->conn->executar($sql) or $this->conn->erro();
}
}
$categoria = new menu();
$categoria->cat();
?>
poderiam me ajudar???
Seu erro ocorre bem na linha de execução do método mysql_query(). Você está informando parâmetros incorretos para esse método.
O primeiro parâmetro espera uma string SQL, que no seu caso, seria a variável $sql, mas você está informando o nome do banco, ou seja, $this->banco. O segundo parâmetro, seria um resource da conexão, e não um $this->banco.
Faça o seguinte, no seu método conexao(), faça com que ele retorne o resultado de mysql_connect(), e atribua o resultado ao método mysql_query. Mais ou menos assim:
Não testei, mas acredito que seja esse o erro, pois até a mensagem de erro diz isso.
Edit ---
Acho que irá ocorrer outro erro aí. O método mysql_fetch_object, retorna um registro em forma de objeto e não em array. Então acho que seria assim a forma ideal para usar:
Para permanecer da maneira que está usando, use o método mysql_fetch_array