Erro ao usar function PDO - Uncaught exception PDOException
15/02/2015
0
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 :
A conexão com o banco estou usando da seguinte forma:
è claro que no lugar dos xxx coloco os dados do banco.
para fazer o select estou usando o seguinte codigo :
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 é
Que erro é esse ? alguem poderia me auxiliar na resolução deste problema ?
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
+ 0
Responder
Post mais votado
16/02/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:
mas verifique se está passando essa variavel corretamente e se vc está executando a SQL após a declaração.
dicas sobre PDO:
https://www.devmedia.com.br/introducao-ao-php-pdo/24973
http://www.rafaelwendel.com/2011/12/tutorial-pdo-php-data-object/
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
Responder
Mais Posts
17/02/2015
Marcos
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.
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.
Responder
Clique aqui para fazer login e interagir na Comunidade :)