AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Segue o código: public function listar($objeto, $extra = null){ //SELECT campo1, campo2, campo3 FROM tabela EXTRA $sql = "SELECT "; for($i = 0; $i < sizeof($this->array_campos); $i++){ if($i == (sizeof($this->array_campos) - 1)){ $sql .= key($this->array_campos) . " FROM "; } else{ $sql .= key($this->array_campos) . ", "; next($this->array_campos); } } $sql .= $extra == null ? $this->tabela : $this->tabela . " $extra"; echo $sql . "<br />"; $query = mysql_query($sql)or die(mysql_error()); return $query; } Na minha página aonde quero exibir esses dados usei: <?php include_once("Base.class.php"); class Pessoas extends Base{ function __construct(){ parent::__construct(); $this->tabela = "pessoas"; $this->primary_key = 'id'; $this->array_campos = array('nome' => null, 'sobrenome' => null); } } $obj = new Pessoas(); while($linha = mysql_fetch_array($obj->listar($obj))){ echo $linha['nome'] . "<br />"; echo $linha['sobrenome'] . "<br />"; } ?> Porém, quando jogo isso no navegador ele retorna: Lembrando que: João Sobrenome qualqur é um registro na minha tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Isso acontece por causa do seu charset ele deve estar igual ao do banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Dezembro 2, 2013 Se vc apenas quer os campos, vc poderia usar a função implode. <?php $campos = array('nome', 'sobrenome', 'idade','endereco'); $sql = 'SELECT ' . implode(',', $campos) . ' FROM tabela'; Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Isso acontece por causa do seu charset ele deve estar igual ao do banco de dados Cara, meu problema são essas linhas: SELECT sobrenome, FROM pessoas <- Não faço idea da onde veio isso. 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 'FROM pessoas' at line 1 <- Nem isso. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Esse erro ai é por causa da virgula que tem depois do sobrenome pessoas é uma tabela do seu banco de dados Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Esse erro ai é por causa da virgula que tem depois do sobrenome pessoas é uma tabela do seu banco de dados Então, o erro ta no loop for, mas eu não consigo achar ele. Era pra ele exibir só o primeiro SELECT, aquele lá de cima Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Tente fazer isso: for($i = 0; $i < sizeof($this->array_campos); $i++){ if($i == (sizeof($this->array_campos) - 1)){ $sql .= key($this->array_campos) . " FROM "; }else{ $sql .= key($this->array_campos); if ($i != (sizeof($this->array_campos) - 2)){ $sql .= ", "; } next($this->array_campos); } } Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Roberto, com esse código ele não adiciona a vírgula, erros: SELECT nomesobrenome FROM pessoasUnknown column 'nomesobrenome' in 'field list' Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Agora esse erro deu pelo motivo que: O campo nomesobrenome não existe na tabela pessoas. Ele não poe a virgula pelo simples fato de que a virgula serve apenas para separar campos, como só tem um então não necessita de virgula... Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Agora esse erro deu pelo motivo que: O campo nomesobrenome não existe na tabela pessoas. Ele não poe a virgula pelo simples fato de que a virgula serve apenas para separar campos, como só tem um então não necessita de virgula... Cara, eu copiei o loop q vc mandou, mas ele não adicionou a vírgula. Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Coloca mais de um campo na sua array e testa e se der erro coloque o que o select esta fazendo Compartilhar este post Link para o post Compartilhar em outros sites
AndrePls 6 Denunciar post Postado Dezembro 2, 2013 Refiz o meu loop, o erro está no WHILE, se eu dou um ECHO no meu SQL ele mostra SELECT nome, sobrenome FROM pessoas porém, quando eu faço o meu while, ele mostra: SELECT nome, sobrenome FROM pessoas SELECT sobrenome, FROM pessoasYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM pessoas' at line 1 Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Dezembro 2, 2013 Poste o seu laço pra eu analisar como esta... Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Dezembro 3, 2013 Poste seu código inteiro para podermos ajudar da melhor forma. Compartilhar este post Link para o post Compartilhar em outros sites