8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je ne comprends pas pourquoi le code suivant fonctionne avec une chaîne de caractère et ne fonctionne pas avec un nombre entier:

public function exister($info){
		
	if(is_int($info)){//ne fonctionne pas.  Il renvoie tj 0
		
		$q=$this->_bd->prepare('SELECT COUNT(*) FROM acteur WHERE id=:id');
		$q->bindParam(':id',$info,PDO: [langue]ARAM_INT);
		return (bool) $q->fetchColumn();
		
		
		
	}
	
	else if (is_string($info)){//Fonctionne
		
	 	$q=$this->_bd->prepare('SELECT COUNT(*) FROM acteur WHERE nom=:nom');
		$q->execute(array(':nom'=>$info));
		return (bool) $q->fetchColumn();
		
		
		
	}


Le code qui fonctionne pour le nombre entier est le suivant:

if(is_int($info)){
		
		return (bool) $q=$this->_bd->query('SELECT COUNT(*) FROM personnages WHERE id='.$info)->fetchColumn();
		
		
		
	}


Le soucis, c'est que je ne comprends pas pourquoi quand la requête est préparée cela ne fonctionne pas.

Merci d'avance