[MySQL(i)/PHP] Erreur inconnue: Couldn't fetch mysqli

Fermé
SyPiC Messages postés 154 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 29 novembre 2013 - 17 mars 2013 à 16:41
SyPiC Messages postés 154 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 29 novembre 2013 - 17 mars 2013 à 17:53
Bonjour,
Je travaille en PHP et lorsque je teste un service que j'ai créé j'obtiens cette erreur:
Warning: mysqli_prepare() [function.mysqli-prepare]: Couldn't fetch mysqli in C:\wamp\www\airsoft\services\JointureService.php on line 131

la ligne 131 correspond à cette ligne dans le code ci-dessous:
$stmt2 = mysqli_prepare($this->connection, "INSERT INTO $this->tablename (fk_utilisateurs, fk_parties) VALUES (?, ?)");

Mon but est en fait de faire un ajout dans une table de relation seulement si la relation n'existe pas, pour cela je compte combien de relation de ce type existent et si il y en à 0 je fait ma requête d'ajout. Mais voilà, cette erreur apparait.
Merci beaucoup d'avance pour votre aide!

public function create_inscription($pk_partie, $pk_utilisateur) {
	//SELECT COUNT(*) AS COUNT FROM $this->tablename where fk_utilisateurs = ? and fk_parties = ?
	$stmt = mysqli_prepare($this->connection, "SELECT COUNT(*) AS COUNT FROM $this->tablename where fk_utilisateurs = ? and fk_parties = ?");
	$this->throwExceptionOnError();

	mysqli_stmt_execute($stmt);
	$this->throwExceptionOnError();
	
	mysqli_stmt_bind_result($stmt, $rec_count);
	$this->throwExceptionOnError();
	
	mysqli_stmt_fetch($stmt);
	$this->throwExceptionOnError();
	
	mysqli_stmt_free_result($stmt);
	mysqli_close($this->connection);
	
	
	if($rec_count == 0) {
		$stmt2 = mysqli_prepare($this->connection, "INSERT INTO $this->tablename (fk_utilisateurs, fk_parties) VALUES (?, ?)");
		$this->throwExceptionOnError();

		mysqli_stmt_bind_param($stmt2, 'ii', $pk_partie, $pk_utilisateur);
		$this->throwExceptionOnError();

		mysqli_stmt_execute($stmt2);		
		$this->throwExceptionOnError();

		$autoid = mysqli_stmt_insert_id($stmt2);

		mysqli_stmt_free_result($stmt2);		
		mysqli_close($this->connection);

		return $autoid;
	} else {
		return 0;
	}
	
}


1 réponse

SyPiC Messages postés 154 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 29 novembre 2013 19
17 mars 2013 à 17:53
Est-ce que c'est du au fait que je prépare 2 statements dans ma méthode?
Sinon, est-il possible de tester si le champ que l'on va créer existe déjà grâce à une requête SQL?
Ce serait la meilleurs méthode, car plus rapide et moins de risque d'erreurs...
0