я пытаюсь моя рука с PDO и хотел бы знать, если следующее правильный код для поиска ключевых слов, так как он дает мне ошибку: mysql_real_escape_string(): [2002] A connection attempt failed because connected host has failed to respond.
поиска с использованием PDO, MySQL и PHP
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>";
}
PHP страница:
if (isset($_POST['search']))
$quotes->searchQuotes();
else
$quotes->displayQuotes();
displayQuotes() отображает котировки тонкие, так что я не уверен, предполагая ничего плохого в связи с этим в себе.
Спасибо за указание на это. любые другие ошибки там, так как он говорит «никаких результатов не найдено», хотя есть цитаты с этим ключевым словом. – input
Ну, дополнительные пробелы в аналогичном выражении найдут только строку поиска, если она окружена пробелами (не уверен, что это было намеренно или нет). Но я редко использовал метод bindparam, поэтому я не уверен на 100% этой функциональности. Запрос выглядит хорошо, учитывая, что эти пробелы были преднамеренными. Однако с этими пробелами, если ключевое слово поиска находится в самом начале или в конце, оно не будет соответствовать, поскольку для него требуются пробелы. –
что бы вы использовали тогда вместо bindparam для поиска ключевого слова? так как я новичок в PDO, я все еще участвую. поэтому, если у вас есть эффективная или лучшая альтернатива, пожалуйста, укажите. – input