[PHP] 417 - Expectation failed

Bonjour à tous,

Je travaille actuellement sur une page de recherche. Après 2 heures de recherche (sic), je bloque toujours, mais j’ai réussi à identifier l’erreur : elle se trouve dans cette fonction…

function searchArticlesTitlesFunction($searchText) {
	$searchArticlesTitlesRequestFunction = $db->prepare("SELECT articles.id
	FROM articles
	WHERE articles.published = 1
	AND LOWER(articles.title) LIKE LOWER(:search)
	ORDER BY date DESC, time DESC");
	$searchArticlesTitlesRequestFunction->execute(array(
		"search" => ("%" . $searchText . "%")
	));
	
	$returnArray = array();
	
	while ($searchArticlesTitlesFunction = $searchArticlesTitlesRequestFunction->fetch()) {
		array_push($returnArray, $searchArticlesTitlesFunction["id"]);
	}
	
	$searchArticlesTitlesRequestFunction->closeCursor();
	
	return $returnArray;
}

…réutilisée quelques lignes plus tard dans cet extrait…

$globalArticlesArray = array();

foreach ($requestsArray as $currentRequest) {
	$globalArticlesArray = array_merge($globalArticlesArray, searchArticlesTitlesFunction($currentRequest));
}

$globalArticlesArray = array_unique($globalArticlesArray);

J’ai vérifié avec des tests, tous les tableaux marchent très bien, mais je n’arrive toujours pas à identifier le problème dans la fonction, même avec « le test des commentaires ». Cependant, il est très probable que cela se trouve dans le $db->prepare et le $request->execute(array(. Mais je n’arrive toujours pas à identifier l’erreur précise, mais avec plusieurs vérificateurs de code PHP / MySQL.

Merci, Thib’.

Rebonjour,

Alors en fait le problème est la portée des variables. Pourtant, en déclarant $db comme global, ça bug. Du coup j’ai essayé de faire avec un $_SESSION["db"], mettre $db dans les arguments mais ça marche pas. Une idée ?

Merci, Thib’.