Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Daniel Santos_171012

Erro PHP MYSQL

Recommended Posts

Olá pessoal, está ocorrendo um erro no meu código, não entendo porque isso, por favor me ajudem.

 

ERRO PHP:

 

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 ') order by id desc limit 100' at line 1' in C:\xampp\htdocs\dev\classes\Notificacoes.class.php:57 Stack trace: #0 C:\xampp\htdocs\dev\classes\Notificacoes.class.php(57): PDO->query('select * from n...') #1 C:\xampp\htdocs\dev\classes\Notificacoes.class.php(19): Notificacoes::listar() #2 C:\xampp\htdocs\dev\index.php(38): Notificacoes->__construct() #3 {main} thrown inC:\xampp\htdocs\dev\classes\Notificacoes.class.php on line 57

 

 

 

Código PHP:

<?php

	class Notificacoes extends DB{

		static $tipo = array(
			0=>'tratarPerfil',
			1=>'tratarFoto',
			2=>'tratarComentario',
			3=>'tratarAmisade'
		);

		static $sessionTemp = '345jhl3k4jh5kh';

		static $cache = array();
		static $dados = array();

		public function __construct(){

			$notificacoes = self::listar();

            foreach ($notificacoes as $value) {
                
                switch ($value['tipo']) {
                    case 0:
                        self::tratarPerfil($value);
                        break;
                    case 1:
                        self::tratarFoto($value); 
                        break;
                    case 2:
                        self::tratarComentario($value);
                        break;
                    default:
                        # code...
                        break;
                }

            }

		}

		public function __destruct(){
			unset($_SESSION[self::$sessionTemp]);
		}

		static function add($uid, $tipo, $result){

			$query = self::getConn()->prepare('insert into notificacoes set uid=?, tipo=?, `result`=?');
			return $query->execute(array($uid,$tipo,$result));

		}

		static function listar(){

			$strIdAmigos = Amisade::$strIdAmigos;

			$query = self::getConn()->query('select * from notificacoes where `uid` in ('.$strIdAmigos.') order by id desc limit 100');
			
			return $query->fetchAll(PDO::FETCH_ASSOC);
		}

		static function tratarFoto($value){

			list($id, $tipo, $uid, $result, $data) = array_values($value);
			list($albumId, $fotoId, $fotoSRC) = explode(':', $result);

			self::setUser($uid);
			self::setAlbum($albumId);

			self::$cache['fotos'][$albumId][$fotoId] = $fotoSRC;
			
			$dados = array(
				'tipo'=>self::$tipo[$tipo],
				'userId'=>$uid,
				'userNome'=>self::$cache['users'][$uid]['nome'],
				'userImagem'=>self::$cache['users'][$uid]['imagem'],
				'albumId'=>$albumId,
				'albumTitulo'=>self::$cache['album'][$albumId]['titulo'],
				'data'=>$data
			);

			if (!isset($_SESSION[self::$sessionTemp]))
				$_SESSION[self::$sessionTemp] = array();

			if (!in_array($albumId, $_SESSION[self::$sessionTemp])) {
				self::$dados[] = $dados;
				array_push($_SESSION[self::$sessionTemp], $albumId);
			}			
		}

		/*
		arr=>array{
			0=>array{
				tratarFoto=>array{
					userId,
					albumTitulo,
					albumId,
					nFotos,
					fotos=>array{...},
					data=>2011-12-06 H:i:s
				}
			}
		}
		*/

		static function setUser($uid){
			if(!isset(self::$cache['users'][$uid])){
				
				$objLogin = new Login;
				$user = $objLogin->getDados($uid,'nome,sobrenome,imagem');

				self::$cache['users'][$uid]['nome'] = $user['nome'].' '.$user['sobrenome'];
				self::$cache['users'][$uid]['imagem'] = $user['imagem']=='' ? 'default.png' : $user['imagem'];
			}
		}

		static function setAlbum($albumId){
			if(!isset(self::$cache['album'][$albumId])){
				$album = Albuns::getAlbum($albumId,'titulo',false);
				self::$cache['album'][$albumId] = $album['album'];
			}
		}

	}
?>

AJUDEM-ME. :) -_-

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa amigo, deu erro, segue a mensagem:

 

Parse error: syntax error, unexpected '==' (T_IS_EQUAL), expecting identifier (T_STRING) in C:\xampp\htdocs\teste\classes\Notificacoes.class.php on line 117

Compartilhar este post


Link para o post
Compartilhar em outros sites

Antes de entrar em desespero, você poderia analisar a mensagem que lhe foi dada, que em uma tradução livre diz algo assim - "Erro de análise: erro de sintaxe, inesperado '==' (T_IS_EQUAL), esperando identificador (T_STRING) em C:\xampp\htdocs\teste\classes\Notificacoes.class.php na linha 117".

 

É só verificar a linha 117 e a 53 (do primeiro erro) na classe Notificacoes.class.php e arrumá-los.

 

Aliás o que foi postado no post 3 está errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro, esqueça o que foi dito no post #3.

Segundo, o erro é causado pelo fato de $strIdAmigos estar em branco, ai a query fica literamente assim:

 

$query = self::getConn()->query('select * from notificacoes where `uid` in () order by id desc limit 100');

 

E isso vai retornar o erro informado.

 

Terceiro, "amisade" é complicado hein?!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.