Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 510876
            [titulo] => Erro ao usar function PDO - Uncaught exception PDOException
            [dataCadastro] => DateTime Object
                (
                    [date] => 2015-02-16 15:06:15
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 391812
            [status] => A
            [isExample] => 
            [NomeUsuario] => Fernando C
            [Apelido] => 
            [Foto] => 
            [Conteudo] => ao q parece, sql está errada; tire:
1 - as crases do nome da tabela;
2 - essa variavel: $limite (está sem utilidade).
-se vc quer limitar a quantidade de linhas retornadas, coloque a palavra [url:descricao=limit]https://www.google.com.br/search?q=clausula+limit+sql&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:pt-BR:official&client=firefox-a&gfe_rd=cr&ei=xiLiVJ3uNaGasgeowYCwDA#rls=org.mozilla:pt-BR:official&q=sql+limit[/url] e a seguir, o nº de linhas
(ex: limit 5 vai t retornar apenas 5 linhas).
- se vc quer substituir o nº 5, do exemplo acima, por uma variavel, a sintaxe fica:
[code]"SELECT * FROM posts WHERE status = '1' ORDER BY id DESC LIMIT $limite"[/code]mas verifique se está passando essa variavel corretamente e se vc está executando a SQL após a declaração.

dicas sobre PDO:
http://www.devmedia.com.br/introducao-ao-php-pdo/24973
http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/ ) )

Erro ao usar function PDO - Uncaught exception PDOException

Marcos
   - 15 fev 2015

Boa tarde, estou tentando usar a seguinte function PDO para fazer um select , mas apresenta o seguinte erro: Quem puder me orientar agradeço.
Essa é a classe :
#Código

<?php

class Querys extends BD {

    public function selecaoLimit($limite) {
        $sqlLimite = "SELECT * FROM 'posts' WHERE status = '1' ORDER BY id DESC $limite";

        return self::conn()->query($sqlLimite);
    }


}

?>

A conexão com o banco estou usando da seguinte forma:
#Código
<?php
class BD{
    private static $conn;
    public function __construct() {}

public static function conn(){
    if(is_null(self::$conn)){
        self::$conn = new PDO ('mysql:host=localhost;dbname=xxxx;','xxxxx','xxxxx');
        //self::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    return self::$conn;
}
    
}

è claro que no lugar dos xxx coloco os dados do banco.
para fazer o select estou usando o seguinte codigo :
#Código
<?php 
     foreach($query->selecaoLimit(1) as $post){ 
     
     
     ?>
                    <div id="destaque">
                        <a href="<?php echo $BASE.'/'.$post['categoria'].'/'.$post['slugcat'];?>" title="<?php echo $post['titulo'] ;?>"><img src="<?php echo $BASE ;?>/posts/<?php echo $post['imgexibicao'] ;?>" width="300" height="170"/><span><?php echo $post['titulo'] ;?></span></a>
                    </div><!--destaque-->
<?php } ?>

e com isso apresenta o seguinte erro:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 ''posts' WHERE status = '1' ORDER BY id DESC 1' at line 1' in C:\Program Files\EasyPHP-12.1\www\novoprojeto\class\Querys.class.php:9 Stack trace: #0 C:\Program Files\EasyPHP-12.1\www\novoprojeto\class\Querys.class.php(9): PDO->query('SELECT * FROM '...') #1 C:\Program Files\EasyPHP-12.1\www\novoprojeto\pages\home.php(3): Querys->selecaoLimit(1) #2 C:\Program Files\EasyPHP-12.1\www\novoprojeto\index.php(19): include('C:\Program File...') #3 {main} thrown in C:\Program Files\EasyPHP-12.1\www\novoprojeto\class\Querys.class.php on line 9
Ali diz que o erro ta na Querys.class.php on line 9
que é
#Código
return self::conn()->query($sqlLimite);

Que erro é esse ? alguem poderia me auxiliar na resolução deste problema ?

Post mais votado

Fernando C
   - 16 fev 2015

ao q parece, sql está errada; tire:
1 - as crases do nome da tabela;
2 - essa variavel: $limite (está sem utilidade).
-se vc quer limitar a quantidade de linhas retornadas, coloque a palavra limit e a seguir, o nº de linhas
(ex: limit 5 vai t retornar apenas 5 linhas).
- se vc quer substituir o nº 5, do exemplo acima, por uma variavel, a sintaxe fica:
#Código

"SELECT * FROM posts WHERE status = '1' ORDER BY id DESC LIMIT $limite"
mas verifique se está passando essa variavel corretamente e se vc está executando a SQL após a declaração.

dicas sobre PDO:
http://www.devmedia.com.br/introducao-ao-php-pdo/24973
http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/

William (devwilliam)
   - 15 fev 2015

Qual versão do MySQL vc tá usando?

Marcos
   - 17 fev 2015

A versão é 5.5 Willian.

Obrigado Fernando , segui sua dica e funcionou .

O problema estava nas 'aspas' da tabela e faltava o LIMIT .

Coloquei na forma que vc orientou e funcionou. Obrigado.