Fórum Erro ao usar function PDO - Uncaught exception PDOException #510808
15/02/2015
0
Essa é a classe :
<?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:
<?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 :
<?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 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 é
return self::conn()->query($sqlLimite);
Que erro é esse ? alguem poderia me auxiliar na resolução deste problema ?
Marcos
Curtir tópico
+ 0Post mais votado
16/02/2015
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:
"SELECT * FROM posts WHERE status = '1' ORDER BY id DESC LIMIT $limite"
dicas sobre PDO:
https://www.devmedia.com.br/introducao-ao-php-pdo/24973
http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/
Fernando C
Gostei + 1
Mais Posts
15/02/2015
William
Gostei + 0
17/02/2015
Marcos
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)