je suis en train ma main avec AOP et je voudrais savoir si ce qui suit est le code correct pour rechercher des mots-clés, car il me donne une erreur: mysql_real_escape_string(): [2002] A connection attempt failed because connected host has failed to respond.
recherche en utilisant pdo, mysql et php
classe php:
public function searchQuotes()
{
$search = mysql_real_escape_string($_POST['search']);
$sql = "SELECT cQuotes, vAuthor, cArabic, vReference FROM thquotes WHERE cQuotes LIKE '% :search %' ORDER BY idQuotes DESC";
try {
$query = $this->_db->prepare($sql);
$query->bindParam(':search', $search, PDO::PARAM_STR);
$query->execute();
if(!$query->rowCount()==0)
{
while($row = $query->fetch())
{
echo $this->formatSearch($row);
}
}
else
{
echo "No results found!";
}
$query->closeCursor();
}
catch (Exception $ex){
echo "Something went wrong " . $ex;
}
}
public function formatSearch($row)
{
$cQuote = highlightWords(htmlspecialchars($row['cQuotes']), $search);
return "<p id=\"s_arabic\">" . $this->h($row['cArabic']) . "</p><br />"
. "<p id=\"s_quotes\"><q> " . $cQuote . " </q></p><br />"
. "<p id=\"s_author\"><b>-</b> " . $this->h($row['vAuthor']) . "</p><br />"
. "<p id=\"s_reference\"><span class=\"source\">Source:</span> " . $this->h($row['vReference']) . "</p>";
}
page php:
if (isset($_POST['search']))
$quotes->searchQuotes();
else
$quotes->displayQuotes();
displayQuotes() affiche les citations fines, donc je suppose que rien ne va pas avec la connexion en elle-même.
Merci de remarquer cela. toutes les autres erreurs, car il dit «aucun résultat trouvé» même s'il y a des citations avec ce mot-clé. – input
Eh bien, les espaces supplémentaires dans l'instruction like trouveront seulement la chaîne de recherche si elle est entourée d'espaces (pas sûr si c'était intentionnel ou non). Mais j'ai rarement utilisé la méthode bindparam, donc je ne suis pas sûr à 100% sur cette fonctionnalité. La requête semble correcte, étant donné que ces espaces étaient intentionnels. Avec ces espaces cependant, si le mot-clé de recherche est au tout début ou à la fin, il ne correspondra pas, étant donné qu'il nécessite les espaces pour le faire correspondre. –
Que utiliseriez-vous alors, au lieu de bindparam, pour rechercher un mot-clé? depuis que je suis nouveau à PDO, j'apprends encore. Donc, si vous avez une alternative efficace ou une meilleure, s'il vous plaît faites remarquer. – input