Page 1 sur 1

PDO : bindParam pour 2 requetes différentes.

Posté : 06 juin 2014, 13:54
par Elie
Hello,

J'aimerai savoir comment faire pour que mon bindParam soit prise en compte dans mon premiere execute mais également dans ma deuxieme.
Suis-je obligé de la redémarré ?
Si vous avez une idée parce que PDO me soule déjà ...
<?php

	include('include/config.php');
	include('include/fonctions.php');
	
	$sql = "SELECT * FROM `tbl_film`";
	$sql .= !empty($_GET['annee']) ? " WHERE `date` = :date" : NULL;
	
	$req = $connexion->prepare($sql);
	if(!empty($_REQUEST['annee'])) $req->bindParam('date', $_GET['annee']);
	
	// On calcule le nombre total ou total pour une année
	$req->execute() or die(erreurMysql($connexion));
	$num = $req->rowCount();
	
	echo $num.' films';
	
	$sql .= " LIMIT :debut, :nb";
	
	$req = $connexion->prepare($sql);
	
	$req->bindValue('debut', 0, PDO::PARAM_INT);
	$req->bindValue('nb', 5, PDO::PARAM_INT);
	
	$req->execute() or die(erreurMysql($connexion));
	$total = $req->rowCount();
	
	echo $req->queryString;
	
	echo $total.' films affichés';

?>

Re: PDO : bindParam pour 2 requetes différentes.

Posté : 06 juin 2014, 14:57
par xTG
Tu as deux requêtes différentes. (à moins qu'il y ait une astuce pour rentrer en paramètre d'un LIMIT de récupérer toute la table => du coup une seule requête, des paramètres différents)
Donc pour moi ce n'est pas envisageable de ne faire l'exercice qu'une fois.

Ce serait comme de prendre une voiture X et y monter un autoradio mais s'attendre à ce que l'opération soit effectuée magiquement aussi sur la voiture Y. ;)

Re: PDO : bindParam pour 2 requetes différentes.

Posté : 06 juin 2014, 20:21
par Elie
La solution que je vais surement breveté tellement c'est high-tech :
<?php

	include('include/config.php');
	include('include/fonctions.php');
	
	// On fait un fonction pour simplifier ?
	function bindIt() {
		
		global $_REQUEST, $req;
		
		if(!empty($_REQUEST['annee'])) $req->bindParam('date', $_REQUEST['annee']);
		
	}
	
	$sql = "SELECT * FROM `tbl_film`";
	$sql .= !empty($_GET['annee']) ? " WHERE `date` = :date" : NULL;
	
	$req = $connexion->prepare($sql);
	
	bindIt();
	
	// On calcule le nombre total ou total pour une année
	$req->execute() or die(erreurMysql($connexion));
	$num = $req->rowCount();
	
	echo $num.' films';
	
	$sql .= " LIMIT :debut, :nb";
	
	$req = $connexion->prepare($sql);
	
	bindIt();
	
	$req->bindValue('debut', 0, PDO::PARAM_INT);
	$req->bindValue('nb', 5, PDO::PARAM_INT);
	
	$req->execute() or die(erreurMysql($connexion));
	$total = $req->rowCount();
		
	echo '<br />'.$total.' films affichés';

?>